如何用Python Turtle绘制4个彩色圆形图案?我的代码存在什么问题?
Python Turtle绘制方形排列彩色圆形的代码错误分析
我尝试用Python Turtle库绘制4个呈方形排列的彩色圆形,以下是我的实现代码:
from turtle import * speed(100) pensize(4) color("black", "yellow") begin_fill() for i in range(4): fd(200) lt(90) end_fill() up() fd(100) lt(90) fd(100) down() colors = ["red", "blue" , "green" , "violet" ] for i in range(4): color("black",colors[i]) begin_fill() circle(50) rt(90) end_fill() ht()
预期效果是4个彩色圆形围绕黄色正方形的四个角呈方形排列,请问我的代码哪里出错了?
代码错误点分析
- 正方形填充逻辑错误:原代码把
end_fill()放在绘制正方形的for循环内部,导致每画一条边就终止填充,黄色正方形无法完整填充,同时海龟移动代码混入正方形绘制循环,直接打乱了后续圆形的起始位置。 - 海龟移动时机错误:在绘制正方形的过程中就执行抬笔移动操作,打断了正方形的连续绘制,应该等正方形完全绘制并填充完成后,再移动海龟到第一个圆形的位置。
- 圆形填充顺序错误:绘制圆形时,
end_fill()放在rt(90)之后,导致填充范围包含了右转的路径,应该在画完圆后先结束填充,再调整海龟方向。
修正后的代码
from turtle import * speed(100) pensize(4) # 绘制并填充黄色正方形 color("black", "yellow") begin_fill() for i in range(4): fd(200) lt(90) end_fill() # 正方形四条边画完后再结束填充 # 移动海龟到第一个圆形的位置(正方形左上角) up() fd(100) lt(90) fd(100) down() colors = ["red", "blue", "green", "violet"] # 绘制四个彩色圆形 for i in range(4): color("black", colors[i]) begin_fill() circle(50) end_fill() # 画完圆立即结束填充 # 移动到下一个圆形的位置 up() rt(90) fd(200) down() rt(90) ht()
修正说明
- 将
end_fill()移到正方形绘制循环外,确保正方形整体被填充。 - 把海龟移动代码放在正方形绘制完成后,保证圆形的起始位置正确。
- 调整圆形绘制顺序:画圆→结束填充→移动到下一个位置,确保每个圆形都被正确填充,且位置呈方形排列。
内容的提问来源于stack exchange,提问作者Darshan Agja
相关产品推荐
相关产品推荐

