乌龟图形:使用if-else语句确定乌龟参数

时间:2018-10-26 19:47:33

标签: python if-statement turtle-graphics

我有一个if-else语句,用于确定乌龟的笔颜色和线宽。当我运行程序时,它将绘制适当的点,但仅以最小的线宽以“白色”绘制它们。在“风速”列表中,有很多值超出我的if-else语句中的最低标准74。是什么导致if语句不将值传递到正确的语句中?

t.penup()
t.setpos(longitudes[0], latitudes[0])
t.pendown()
i = 0
while i < len(latitudes):
    t.setpos(longitudes[i], latitudes[i])
    for index in windspeeds:
        if index < 74:
            t.pencolor("white")
            t.width(2)
        elif 74 <= index <= 95:
            t.pencolor("blue")
            t.width(4)
        elif 96 <= index <= 110:
            t.pencolor("green")
            t.width(6)
        elif 111 <= index <= 129:
            t.pencolor("yellow")
            t.width(8)
        elif 130 <= index <= 156:
            t.pencolor("#FFA500")
            t.width(10)
        elif 157 <= index:
            t.pencolor("red")
            t.width(12)
    i += 1

1 个答案:

答案 0 :(得分:1)

我认为问题在于您要遍历每个点的windspeeds,但是您没有移动笔。 windspeeds中的最后一个元素可能少于74。

因此,对于每个位置,您都将经历所有风速,无需移动笔即可多次更改颜色和宽度。因此,在移动笔后,您总是以t.pencolor("white")t.width(2)结尾。

是否应该像windspeedslongitudes数组那样索引latitudes数组?如果是这样,您可能想要类似的东西:

t.penup()
t.setpos(longitudes[0], latitudes[0])
t.pendown()
for i in range(len(latitudes)):
    t.setpos(longitudes[i], latitudes[i])
    speed = windspeeds[i]
    if speed < 74:
        t.pencolor("white")
        t.width(2)
    elif speed < 94:
        t.pencolor("blue")
        t.width(4)
...
    elif speed < 157:
        t.pencolor("#FFA500")
        t.width(10)
    else:
        t.pencolor("red")
        t.width(12)