我一直在写一个小代码让我的乌龟(t)画一颗星。我需要保持在我所拥有的代码的一般范围内,但我希望有人看一看,看看出了什么问题。我是一名新的程序员,请耐心等待。
import turtle
def drawStar(n, l):
"""Get turtle t to draw a star with n sides at l length"""
for i in range(n):
t.forward(l)
t.left(36)
t.forward(l)
t.left(36)
drawStar(5, 100)
wn.exitonclick()
它说问题出在第6行(drawStar(5,100))
答案 0 :(得分:1)
除了讨论的语法错误之外,您还有一个逻辑错误。考虑您的t.left(36)
语句或稍后的t.left(144)
语句。传递的角度实际上是n
的函数,并且使其成为常数,因为这意味着此例程仅适用于n
的一个值。考虑:
drawStar(7, 100)
你没有得到一颗七角星,只是一个(重复的)五角星的一部分。这不是您的文档对n
的主张。如果我们改为:
import turtle
def drawStar(n, l):
"""Get turtle to draw a star with n sides of l length"""
for _ in range(n):
turtle.forward(l)
turtle.left(2 * 360 / n) # calculate the angle
drawStar(7, 100)
turtle.exitonclick()
如果我们想要的话,我们仍然可以得到我们的五角星,但我们也可以获得七角星:
不幸的是,此逻辑仅适用于n
的奇数值。甚至值也会让我们回到n / 2
边的正多边形。我们需要一个不同的公式来生成具有偶数点的星星......
答案 1 :(得分:0)
t
未定义的问题。如果t
应该直接从turtle
模块中调用某个方法,请使用:
import turtle as t