You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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()

修正说明

  1. 将end_fill()移到正方形绘制循环外,确保正方形整体被填充。
  2. 把海龟移动代码放在正方形绘制完成后,保证圆形的起始位置正确。
  3. 调整圆形绘制顺序:画圆→结束填充→移动到下一个位置,确保每个圆形都被正确填充,且位置呈方形排列。

内容的提问来源于stack exchange,提问作者Darshan Agja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 21:39:18