使用turtle模块画实心五角星,程序结果是空心的,问题在哪?
本帖最后由 HuangBin2025 于 2025-4-10 17:13 编辑import turtle
turtle.hideturtle()
turtle.color('red')
turtle.begin_fill()
for i in range(5):
turtle.forward(200)
turtle.right(144)
turtle.end_fill()
turtle.mainloop() 问题解答:五角星填充失效的原因及解决方案
你的代码绘制五角星后未闭合路径,导致填充失败。关键问题在于路径起点和终点未对齐。以下是修正后的代码:
import turtle
turtle.hideturtle()
turtle.color('red')
# 调整初始方向为72度,确保路径闭合
turtle.setheading(72)# 新增关键代码
turtle.begin_fill()
for i in range(5):
turtle.forward(200)
turtle.right(144)# 每次右转144度
turtle.end_fill()
turtle.mainloop()
修改说明:
[*]添加 turtle.setheading(72):将初始方向调整为72度,保证五次移动后路径自动闭合
[*]填充逻辑不需要调整,begin_fill() 和 end_fill() 需保持包裹绘制代码
原理图解:
五角星每个顶点的外角为144度,但路径闭合需要初始方向偏移72度(360/5的1/2)。通过调整初始角度,保证绘制完成后首尾相接,填充才能生效。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 只能一笔画边缘才能填充满 使官方的填充算法问题导致,你用这个方法画边缘就没问题:
import turtle
turtle.hideturtle()
turtle.color('red')
# 调整起始方向,使五角星闭合
turtle.setheading(72)
turtle.begin_fill()
for i in range(5):
turtle.fd(50)
turtle.left(72)
turtle.fd(50)
turtle.right(144)
turtle.end_fill()
turtle.done() 不用调整起始方向,只要连续沿着边缘画完就可以
页:
[1]