【问题标题】:turtle-graphics: Using if-else statement to determine turtle parametersturtle-graphics:使用 if-else 语句确定海龟参数
【发布时间】:2019-03-31 14:37:40
【问题描述】:

我有一个 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

【问题讨论】:

  • 请为windspeedlatitudelongitude 添加演示数据 - 为什么索引而不是speed 作为风速的运行变量?另外-为什么要为elif的下限...如果它if已经匹配了-所以下一个只需要elif index &lt;= 95: ..等
  • 设置海龟的颜色和宽度后,您问题中的代码不会移动它并绘制任何东西......它只是再次循环并将它们更改为其他东西而不使用它们。
  • 谢谢,我明白了,也感谢代码冗余检查@Patrick Artner

标签: python if-statement turtle-graphics


【解决方案1】:

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

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

windspeeds 数组是否应该像 longitudeslatitudes 数组一样被索引?如果是这样,您可能想要这样的东西:

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)

【讨论】:

  • 是的,它们的索引相同。我明白您所说的何时笔的移动发生。我在想逻辑是在循环之外发生的(即一旦颜色改变,它就会保持改变,所以只要它首先改变就可以了。)但我可以看到当考虑范围时,那不是案子。感谢您的澄清。
猜你喜欢
  • 2021-11-26
  • 1970-01-01
  • 2020-07-22
  • 2016-08-16
  • 2019-04-16
  • 2014-02-08
  • 2019-04-09
  • 1970-01-01
  • 2022-01-19
相关资源
最近更新 更多