我有一个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
答案 0 :(得分:1)
我认为问题在于您要遍历每个点的windspeeds
,但是您没有移动笔。 windspeeds
中的最后一个元素可能少于74。
因此,对于每个位置,您都将经历所有风速,无需移动笔即可多次更改颜色和宽度。因此,在移动笔后,您总是以t.pencolor("white")
和t.width(2)
结尾。
是否应该像windspeeds
和longitudes
数组那样索引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)