问题描述
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)