You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python Turtle中重复获取随机颜色?(DVD logo复刻场景)

解决Python Turtle重复获取随机RGB颜色的问题

你现在的代码只在初始化时生成一次固定的RGB值,要重复获取新颜色,最直接的方法是把生成随机颜色的逻辑做成可重复调用的函数。

步骤说明:

  • 首先必须开启Turtle的255色模式(默认是0-1的小数模式,直接用0-255会出问题):
    import turtle
    import random
    
    turtle.colormode(255)  # 关键:让Turtle支持0-255范围的RGB值
    
  • 定义一个生成随机颜色的函数,每次调用它都会重新生成一组新的RGB值:
    def get_random_color():
        r = random.randint(0, 255)
        g = random.randint(0, 255)
        b = random.randint(0, 255)
        return (r, g, b)
    
  • 之后每次需要换颜色时(比如DVD logo碰到窗口边界时),直接调用这个函数就行:
    # 示例:用正方形模拟DVD logo
    turtle.shape("square")
    turtle.fillcolor(get_random_color())  # 第一次设置颜色
    turtle.penup()
    turtle.speed(0)
    
    # 移动速度参数
    dx = 2
    dy = 2
    
    while True:
        x, y = turtle.pos()
        # 碰撞左右边界:反转x方向并换颜色
        if x > turtle.window_width()/2 - 20 or x < -turtle.window_width()/2 + 20:
            dx *= -1
            turtle.fillcolor(get_random_color())
        # 碰撞上下边界:反转y方向并换颜色
        if y > turtle.window_height()/2 - 20 or y < -turtle.window_height()/2 + 20:
            dy *= -1
            turtle.fillcolor(get_random_color())
        turtle.setpos(x + dx, y + dy)
    

关键要点:

  • 函数的作用就是把重复执行的代码打包,每次调用都会重新执行里面的随机生成逻辑,所以能拿到新的颜色值。
  • 必须先调用turtle.colormode(255),否则Turtle会把0-255的RGB值当成0-1范围的小数处理,导致颜色显示异常。

内容的提问来源于stack exchange,提问作者OwenSucksAtCoding

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 22:05:20