海龟绕了好几圈都回不回原点

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)