【问题标题】:python turtle graphics iterating through color index throwing an errorpython海龟图形迭代颜色索引抛出错误
【发布时间】:2013-10-14 19:59:50
【问题描述】:

我刚开始使用 python Turtle 图形模块,我遇到的问题不是 Turtle 本身,而是我的算法样式。我正在使用 window.colormode(255) 当我在我的程序中从红色迭代到蓝色时,它非常棒并且工作得很好,每次循环都会增加蓝色变量并减少红色变量。

我的过滤器遇到了问题,它应该颠倒颜色增量器/减量器的顺序(一旦 r = 0 和 b = 255,我想从蓝色变回红色):

这是绘制的代码:

counter = 1
firstlength = 1
secondlength = 1
thirdlength = 1
fourthlength = 1
fifthlength = 1
colorList = [255,0,0] # r g b
f = 0 # index for colorlist
for i in listOfTurtles:
    i = turtle.Turtle()
    i.pencolor(colorList[0], colorList[1], colorList[2])
    i.speed(0) # no turn animations
    i.left(counter)
    i.forward(firstlength)
    i.left(15)
    i.forward(secondlength)
    i.left(15)
    i.forward(thirdlength)
    i.left(15)
    i.forward(fourthlength)
    i.left(15)
    i.forward(fifthlength)
    counter += 1
    firstlength += .1
    secondlength += .11
    thirdlength += .12
    fourthlength += .13
    fifthlength += .14

这是迭代笔颜色的问题(使用下面的答案):

blueUp = True
    if blueUp == True:
        colorList[0] -= 1
        colorList[2] += 1
        if colorList[0] <= 1:
            blueUp = False
    else:
        colorList[0] += 1
        colorList[2] -= 1
        if colorList[2] <= 0:
            blueUp = True

但是,我设置的这个过滤器不会在需要时翻转颜色增量器/减量器;从而导致“错误的颜色序列错误:(-1, 0, 256)

所以我知道它增加了我的蓝色 1 数字太高,而我的红色数字在第一次通过时太低,然后出错,但我不确定如何解决它。我玩过 > 值并将它们提高(捕获大约 5 或 250),但我没有得到结果。

我完全愿意用一种完全不同的方式来写这篇文章,因为我确信我已经想出了解决这个问题的最糟糕的方法。

【问题讨论】:

    标签: python turtle-graphics


    【解决方案1】:

    对于初学者,您可能应该更改以下内容:

    if blueUp == False:
        if colorsList[2] > 0:
    

    到这里:

    if blueUp == False:
        if colorList[2] > 1:
    

    【讨论】:

      【解决方案2】:

      我是个白痴。我的 bool 变量在我的外部 for 语句中是本地的,即迭代我的 i 的那个。每个循环它都会重置 blueUp 的值并再次强制索引向下 1。通过将我的 bool 移到我的外部 for 循环之外解决了这个问题。

      【讨论】: