用Python画一颗有海龟的星星

问题描述 投票:0回答:1

最初,我需要使用具有随机数量分支的星星来绘制花朵。所以,我写了这个函数:

def star(nb_branches:int , size:int) :
    for i in range(int(nb_branches / 2)) :
        forward(size * 3)
        left(180 - (360 / nb_branches))

(这个函数的参数是随机的,并且是在另一个函数中创建的,但这不是问题)
然而,我意识到,当分支数量为奇数时,星星就不是完美的星星。我认为循环和/或角度是这个问题的根源。此后,我尝试了不同的角度和可能性,但我还没有得到答案。
预先感谢您的回复。

这是我从这个带有奇数的函数中得到的示例

python turtle-graphics
1个回答
0
投票

在我看来,运行你的星星就像一颗未完成的星星。因此我将循环更改为

def star(nb_branches:int , size:int) :
    for i in range(int(nb_branches *2)) :
        forward(size * 3)
        left(180 - (360 / nb_branches))

由于我将

nb_branches
理解为星形尖端的数量,因此这会导致星形的尖端数量是所需尖端的两倍。

因此我建议使用以下功能

from turtle import *

def star(nb_branches:int , size:int) :
    for i in range(int(nb_branches)) :
        forward(size * 3)
        left(180 - (180 / (nb_branches)))
# testcase
star(11, 50)

然而,这甚至不适用于

nb_branches
。原因是,在绘制边缘一半之后,形状就已经闭合了。为了绘制偶数的星星,需要在一半的交互后重新定位乌龟,然后绘制第二个形状。

© www.soinside.com 2019 - 2024. All rights reserved.