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

Python Turtle绘制雪人时按钮圆圈无法正常绘制问题排查

Python Turtle雪人绘制程序纽扣异常修复

问题根因

纽扣无法正常绘制是4个细节错误导致的:

  • 两处纽扣绘制位置的落笔代码写错:你写的是turt.pendown,这只是引用函数对象,没有加括号执行调用,海龟全程保持抬笔状态,自然画不出痕迹
  • 填充逻辑位置错误:眼睛、下方纽扣的begin_fill()和end_fill()被写在了画圆的for循环内部,每前进一小段就执行一次填充,无法形成完整的实心圆形
  • 海龟朝向未重置:画完嘴巴部分你调用了turt.right(90)修改了朝向,后续画纽扣前没有调整朝向,导致绘制路径偏移,出不来正圆
  • 上方纽扣(坐标y=100位置)没有添加填充逻辑,就算绘制成功也是空心,和雪人纽扣的实心样式不匹配

修正后可运行代码

import turtle

turt = turtle.Turtle()
turt.speed(0) # 0为turtle最快绘制速度,原参数100000超出0-10的有效范围不生效

# 最下方雪人身体大圈
for i in range(36):
    turt.forward(18)
    turt.right(10)

# 中间雪人身体圈
for i in range(36):
    turt.forward(12)
    turt.left(10)

# 雪人头
turt.penup()
turt.goto(0, 228)
turt.pendown()
for i in range(36):
    turt.forward(8)
    turt.right(10)
    
# 左眼
turt.penup()
turt.goto(-7, 200)
turt.pendown()
turt.begin_fill()
for i in range(36):
    turt.forward(1)
    turt.right(10)
turt.end_fill()

# 右眼
turt.penup()
turt.goto(20, 200)
turt.pendown()
turt.begin_fill()
for i in range(36):
    turt.forward(1)
    turt.right(10)
turt.end_fill()
  
# 嘴巴
turt.penup()
turt.goto(-5, 175)
turt.pendown()
turt.right(90)
for i in range(18):
    turt.forward(2)
    turt.left(10)
  
# 第一颗纽扣
turt.penup()
turt.goto(-3, 100)
turt.setheading(0) # 重置朝向保证绘制正圆
turt.pendown() # 补全括号调用落笔函数
turt.begin_fill()
for i in range(36):
    turt.forward(2)
    turt.right(10)
turt.end_fill()

# 第二颗纽扣
turt.penup()
turt.goto(-3, 80)
turt.setheading(0) # 重置朝向
turt.pendown() # 补全括号调用落笔函数
turt.begin_fill()
for i in range(36):
    turt.forward(2)
    turt.right(10)
turt.end_fill()

turtle.done()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 17:24:21