使用" drawStar"在Python上绘制一个明星

时间:2017-10-31 20:35:37

标签: python turtle-graphics

我一直在写一个小代码让我的乌龟(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))

2 个答案:

答案 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()

如果我们想要的话,我们仍然可以得到我们的五角星,但我们也可以获得七角星:

enter image description here

不幸的是,此逻辑仅适用于n的奇数值。甚至值也会让我们回到n / 2边的正多边形。我们需要一个不同的公式来生成具有偶数点的星星......

答案 1 :(得分:0)

t未定义的问题。如果t应该直接从turtle模块中调用某个方法,请使用:

import turtle as t