Python使用turtle库绘制n角星 解决6、14等特殊点数绘制问题
Python turtle绘制n角星方案修正
你遇到的问题核心是偶数分支判断条件重复,且未对6、14、22这类特殊点数做单独判断:这类点数规律为x ≡ 6 mod 8(即x减6后可被8整除),对应的10、18、26这类点数规律为x ≡ 2 mod 8,调整判断顺序和绘制逻辑即可解决。
修正要点
- 调整偶数分支的判断优先级,避免重复的
x%2==0条件导致后续分支永远无法触发 - 删除了
x%4==0分支中冗余的y+=360/x语句,该语句不会对循环逻辑产生影响 - 新增
x%8==6的判断分支,对应6、14、22这类点数,采用适配的旋转角度计算逻辑
修正后完整代码
from turtle import * # Settings speed(5) width(1) color('red', 'yellow') # outline, fill x=int(input('Enter the number of points you want the star to have.')) begin_fill() # 奇数点数星 if x % 2 != 0: for i in range(x): right(180 - 180/x) forward(300) # 可被4整除的偶数点数星 elif x % 4 == 0: for i in range(x): y = 180 - 360/x right(y) forward(300) # 10、18、26……这类 x%8==2 的点数 elif x % 8 == 2: for i in range(x): y = 90 + 180/x right(y) forward(300) # 6、14、22……这类 x%8==6 的点数 else: for i in range(x): y = 180 - 720/x right(y) forward(300) end_fill() hideturtle() exitonclick()
内容的提问来源于stack exchange,提问作者user13558716
相关产品推荐
相关产品推荐

