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

如何精简Python Turtle绘图代码?需保留原输出效果

精简Python Turtle代码(保持绘图效果不变)

我是一名编程初学者,希望在不改变绘图输出效果的前提下,精简这段使用Python Turtle编写的代码行数。我曾尝试用for循环等方法,但无法得到与原代码一致的输出,特寻求帮助。

原始代码

import turtle
t=turtle.Turtle()
t.speed(5)
#external form
t.pen(pensize=2, pencolor="blue")
t.forward(400)
t.right(120)
t.forward(200)
t.pen(pensize=2, pencolor="purple")
t.right(120)
t.forward(200)
t.right(60)
t.forward(200)
t.left(120)
t.forward(200)
t.right(60)
t.forward(200)
t.left(120)
t.forward(200)
t.right(60)
t.forward(200)
t.left(120)
t.forward(200)
t.right(60)
t.forward(200)
t.left(120)
t.forward(200)
t.right(60)
t.forward(200)
t.left(120)
t.forward(200)
t.right(60)
t.forward(200)
t.penup()
t.goto(0,0)
t.pendown()
t.pen(pensize=2, pencolor="blue")
t.left(180)
t.forward(400)
t.right(120)
t.forward(200)
t.pen(pensize=2, pencolor="purple")
t.right(60)
t.forward(200)
t.pen(pensize=2, pencolor="blue")
t.right(60)
t.backward(200)
t.forward(800)
t.right(120)
t.forward(200)
t.backward(200)
t.left(120)
t.backward(800)
t.left(60)
t.forward(200)
t.penup()
t.goto(0,0)
t.pendown()
t.left(60)
t.forward(400)
t.right(120)
t.forward(200)
t.backward(200)
t.right(60)
t.forward(800)
t.right(120)
t.forward(200)
#inner figure
t.penup()
t.goto(-45, -230)
t.pendown()
t.pen(pensize=4, pencolor="yellow")
t.right(120)
t.forward(90)
t.circle(5,90)
t.forward(90)
t.left(90)
t.forward(105)
t.back(110)
t.left(-90)
t.forward(15)
t.left(90)
t.forward(110)
t.left(90)
t.forward(15)
t.left(90)
t.forward(5)
t.right(90)
t.forward(90)
t.circle(5,90)
t.penup()
t.goto(-25,-118)
t.pendown()
t.left(90)
t.forward(8)
t.circle(-10,90)
t.forward(30)
t.circle(-10,90)
t.forward(8)
t.penup()
t.goto(-25,-215)
t.pendown()
t.left(180)
t.forward(65)
t.penup()
t.goto(0,-215)
t.pendown()
t.forward(65)
t.penup()
t.goto(25,-215)
t.pendown()
t.forward(65)

精简后的代码

import turtle

t = turtle.Turtle()
t.speed(5)

# 外部图形绘制
t.pen(pensize=2, pencolor="blue")
t.forward(400)
t.right(120)
t.forward(200)
t.pencolor("purple")
t.right(120)
t.forward(200)

# 重复斜向线段用循环处理
for _ in range(5):
    t.right(60)
    t.forward(200)
    t.left(120)
    t.forward(200)

# 返回原点继续绘制
t.penup()
t.goto(0, 0)
t.pendown()
t.pencolor("blue")
t.left(180)
t.forward(400)
t.right(120)
t.forward(200)
t.pencolor("purple")
t.right(60)
t.forward(200)
t.pencolor("blue")
t.right(60)
t.backward(200)
t.forward(800)
t.right(120)
t.forward(200)
t.backward(200)
t.left(120)
t.backward(800)
t.left(60)
t.forward(200)

# 返回原点绘制另一部分
t.penup()
t.goto(0, 0)
t.pendown()
t.left(60)
t.forward(400)
t.right(120)
t.forward(200)
t.backward(200)
t.right(60)
t.forward(800)
t.right(120)
t.forward(200)

# 内部图形绘制
t.penup()
t.goto(-45, -230)
t.pendown()
t.pen(pensize=4, pencolor="yellow")
t.right(120)
t.forward(90)
t.circle(5, 90)
t.forward(90)
t.left(90)
t.forward(105)
t.back(110)
t.left(-90)
t.forward(15)
t.left(90)
t.forward(110)
t.left(90)
t.forward(15)
t.left(90)
t.forward(5)
t.right(90)
t.forward(90)
t.circle(5, 90)

t.penup()
t.goto(-25, -118)
t.pendown()
t.left(90)
t.forward(8)
t.circle(-10, 90)
t.forward(30)
t.circle(-10, 90)
t.forward(8)

# 底部三条横线用循环处理
for x in (-25, 0, 25):
    t.penup()
    t.goto(x, -215)
    t.pendown()
    if x == -25:
        t.left(180)
    t.forward(65)

turtle.done()

精简说明

  1. 循环复用重复操作:外部图形中重复5次的right(60)-forward(200)-left(120)-forward(200)序列,用for循环替代,减少冗余代码。
  2. 简化画笔设置:重复设置pensize=2的操作只保留一次,后续仅修改pencolor即可,因为画笔粗细未变。
  3. 底部横线循环绘制:三条位置规律的横线用循环遍历x坐标,避免重复的抬笔、移动、落笔、画线操作。
  4. 保留核心逻辑:所有绘图的角度、距离、颜色设置完全和原代码一致,确保输出效果无变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:54:53