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

使用Python turtle库实现海龟移动运行报错问题求助

第一份代码运行说明

你提供的第一份未封装的turtle代码本身无语法错误,可直接正常运行,执行后会绘制带刻度的圆形以及顶部装饰线条。
代码如下:

import turtle as trtl
t = trtl.Turtle()
t.speed(100)
t.penup()
t.goto(0, -20)
t.pendown()
t.circle(100)
t.left(90)
t.forward(40)
t.penup()
t.forward(40)
t.pendown()
t.forward(40)
t.penup()
t.forward(40)
t.pendown()
t.forward(40)
t.right(180)
t.forward(40)
t.right(45)
t.right(45)
t.penup()
t.right(45)
t.goto(0, 140)
t.pendown()
t.left(203)
t.forward(46)
t.right(45)
t.forward(46)
t.right(45)
t.forward(46)
t.right(45)
t.forward(46)
t.right(45)
t.forward(46)
t.right(45)
t.forward(46)
t.right(45)
t.forward(46)
t.right(45)
t.forward(46)
t.right(45)
t.forward(46)
t.left(45)
t.forward(40)
t.penup()
t.goto(0, 140)
t.pendown()
t.left(180)
t.forward(46)
t.right(45)
t.forward(40)
t.penup()
t.right(180)
t.forward(40)
t.right(90)
t.forward(46)
t.right(45)
t.pendown()
t.forward(40)
wn = trtl.Screen()
wn.mainloop()

第二份封装版代码问题修复

你第二份用def封装的代码存在多个问题,是触发语法错误的原因:

  • Python函数定义关键字是小写def,你写的Def首字母大写直接触发语法错误
  • 导包逻辑混乱,函数内部重复导入turtle库,外部已经完成导包无需重复操作
  • 调用Screen对象拼写错误,你导包用了trtl别名,正确写法是trtl.Screen(),首字母大写且需要加执行括号
  • tracer是Screen的方法,需要加括号传参,比如tracer(0)表示关闭动画直接出图
  • 函数定义完成后没有手动调用,也没有加窗口保持的mainloop()逻辑,即使语法正确也无法正常显示效果

修正后可正常运行的封装版代码:

import turtle as trtl                   
t = trtl.Turtle()

def moving_name():
    # 关闭绘制动画,可按需调整参数,改为1则恢复默认动画
    screen = trtl.Screen()
    screen.tracer(0)
    t.speed(100)
    t.penup()
    t.goto(0, -20)
    t.pendown()
    
    t.circle(100)
    t.left(90)
    t.forward(40)
    t.penup()
    t.forward(40)
    t.pendown()
    t.forward(40)
    t.penup()
    t.forward(40)
    t.pendown()
    t.forward(40)
    t.right(180)
    t.forward(40)
    t.right(45)
    t.right(45)
    t.penup()
    t.right(45)
    t.goto(0, 140)
    t.pendown()
    t.left(203)
    t.forward(46)
    t.right(45)
    t.forward(46)
    t.right(45)
    t.forward(46)
    t.right(45)
    t.forward(46)
    t.right(45)
    t.forward(46)
    t.right(45)
    t.forward(46)
    t.right(45)
    t.forward(46)
    t.right(45)
    t.forward(46)
    t.right(45)
    t.forward(46)
    t.left(45)
    t.forward(40)
    t.penup()
    t.goto(0, 140)
    t.pendown()
    t.left(180)
    t.forward(46)
    t.right(45)
    t.forward(40)
    t.penup()
    t.right(180)
    t.forward(40)
    t.right(90)
    t.forward(46)
    t.right(45)
    t.pendown()
    t.forward(40)
    # 刷新画布,tracer设为0时需要手动刷新
    screen.update()

# 调用封装好的函数
moving_name()
# 保持窗口不关闭
wn = trtl.Screen()
wn.mainloop()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:24:05