海龟绕了好几圈都回不回原点
Turtle can't go back to the original point after several loops
这是代码。我尝试了以下方法。
为什么会这样?谁能解释一下?
import turtle
turtle.penup()
turtle.setposition(0,300)
turtle.pendown()
turtle.pencolor("red")
turtle.speed(10)
for i in range(6 , 15, 2):
step = int(360 / i)
turtle.setheading(int(90 - (180 - step)/2))
for j in range(1, 1 + i):
turtle.right(step)
turtle.forward(10*i)
turtle.exitonclick()
是不是计算中有浮点数?
是的,这是因为 360 不能很好地被 14 整除。这是外循环的最后一次迭代。
- i = 6:
step
是 360 / 6 => 60
- i = 8:
step
是 360 / 8 => 45
- i = 10:
step
是 360 / 10 => 36
- i = 12:
step
是 360 / 12 => 30
- i = 14:
step
是 360 / 14 => 25.714285714
如果您将代码更改为不将 step
值从浮点数截断为整数,则它可以正常工作:
for i in range(6, 15, 2):
step = 360.0 / i
turtle.setheading(90 - (180 - step)/2)
for j in range(1, i + 1):
turtle.right(step)
turtle.forward(10*i)
这是代码。我尝试了以下方法。
import turtle
turtle.penup()
turtle.setposition(0,300)
turtle.pendown()
turtle.pencolor("red")
turtle.speed(10)
for i in range(6 , 15, 2):
step = int(360 / i)
turtle.setheading(int(90 - (180 - step)/2))
for j in range(1, 1 + i):
turtle.right(step)
turtle.forward(10*i)
turtle.exitonclick()
是不是计算中有浮点数?
是的,这是因为 360 不能很好地被 14 整除。这是外循环的最后一次迭代。
- i = 6:
step
是 360 / 6 => 60 - i = 8:
step
是 360 / 8 => 45 - i = 10:
step
是 360 / 10 => 36 - i = 12:
step
是 360 / 12 => 30 - i = 14:
step
是 360 / 14 => 25.714285714
如果您将代码更改为不将 step
值从浮点数截断为整数,则它可以正常工作:
for i in range(6, 15, 2):
step = 360.0 / i
turtle.setheading(90 - (180 - step)/2)
for j in range(1, i + 1):
turtle.right(step)
turtle.forward(10*i)