2

如果我们想用 n 条小线勾勒出我们的圆,那么我们可以将圆周和 360 度都除以 n(即 (2*pi*r)/n 和 360/n)。

我没有那样做吗?当我运行它时,它会画出大约 3/4 的圆圈。

import turtle, math

window = turtle.Screen()
window.bgcolor('blue')

body = turtle.Turtle()
body.pencolor('black')
body.fillcolor('white')
body.speed(10)
body.width(3)
body.hideturtle()
body.up()
body.goto(0, 200)

lines = 40

toprad = 40

top_circum = 2 * math.pi * toprad

sol = top_circum / lines
circle = 360 / lines

for stops in range(lines):
    body.pendown()
    body.left(sol)
    body.forward(circle)


window.exitonclick()
4

1 回答 1

4

更好的命名变量可能会有所帮助!

我认为您已经混合了两个变量。我认为你的代码应该是:

for stops in range(lines):
    body.pendown()
    body.left(circle)    // swapped vars 
    body.forward(sol)    // on these two lines

基本上,通过混合变量,您旋转了应该向前移动笔的量,反之亦然。

对于更易读的代码,使这种错误更难发生,我建议重命名你的变量,如下所示:

circle --> penForwardAmount
sol    --> penRotateAmount
lines  --> numberOfLines

最后,删除topRad变量并使用numLines你曾经使用过的任何地方topRad

于 2013-10-28T09:55:41.160 回答