Python Turtle绘制多分支星星:奇数分支无法生成完美图形
奇数分支星星绘制异常的解决办法
我需要用随机分支数绘制星星花朵,写了下面的Python函数:
def star(nb_branches:int , size:int) : for i in range(int(nb_branches / 2)) : forward(size * 3) left(180 - (360 / nb_branches))
(函数参数由其他函数随机生成,这部分没问题)
但发现当分支数为奇数时,无法生成完美的星星,推测问题出在循环次数和角度设置上,调整角度后还是没解决,奇数分支的错误效果是绘制出不闭合、线条错乱的图形。
问题根因
- 循环次数不足:奇数分支时,
int(nb_branches/2)会直接截断小数部分(比如5分支只循环2次),导致超一半的分支没绘制,图形自然不完整。 - 对角度公式的场景误解:原角度公式本身是通用的,但因为循环次数没覆盖全部分支,才导致奇数分支时失效。
修正后的代码
def star(nb_branches: int, size: int): angle = 180 - (360 / nb_branches) # 循环次数等于总分支数,确保每条线都绘制 for _ in range(nb_branches): forward(size * 3) left(angle)
直白解释
- 不管分支数是奇是偶,都循环
nb_branches次,把每个分支都画到,不会遗漏。 - 原来的角度公式本身没问题,就是之前只画了一半的线,现在补全所有分支,就能画出闭合的完美星星了。
内容的提问来源于stack exchange,提问作者Clément
相关产品推荐
相关产品推荐

