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

Python Turtle小海龟无法正常上下移动问题求助

Python Turtle小海龟无法正常上下移动问题求助

嘿,我帮你找出问题啦!你的代码里有两个关键错误导致上下移动异常:

  • 上下移动函数的坐标参数写错了:在go_up和go_down函数里,你调用pen.setposition(newY, y),这相当于把x坐标改成了新的y值,y坐标却完全没变化,完全搞反了setposition()的参数顺序!setposition()的正确格式是(x坐标, y坐标),所以上下移动时应该保持x坐标不变,只修改y坐标,正确写法是pen.setposition(x, newY)。
  • 每个移动函数里都调用了turtle.done():这个函数执行后会直接终止整个程序的事件循环,导致你按一次键后程序就停止运行了,自然没法继续控制小海龟移动。必须把四个移动函数里的turtle.done()全部删掉。

下面是修正后的完整代码:

import turtle

screen = turtle.Screen()
screen.setup(600, 600)
screen.bgcolor("white")

pen = turtle.Turtle()
pen.color("black", "black")
pen.shape("circle")

def go_left():
    screen.onkeypress(None, "a")
    global pen
    pos = pen.pos()
    x, y = pos
    newX = x - 10
    pen.setposition(newX, y)

def go_right():
    screen.onkeypress(None, "d")
    global pen
    pos = pen.pos()
    x, y = pos
    newX = x + 10
    pen.setposition(newX, y)

def go_up():
    screen.onkeypress(None, "w")
    global pen
    pos = pen.pos()
    x, y = pos
    newY = y + 10
    pen.setposition(x, newY)

def go_down():
    screen.onkeypress(None, "s")
    global pen
    pos = pen.pos()
    x, y = pos
    newY = y - 10
    pen.setposition(x, newY)

screen.onkeypress(go_up, "w")
screen.onkeypress(go_down, "s")
screen.onkeypress(go_left, "a")
screen.onkeypress(go_right, "d")
screen.listen()

turtle.mainloop()

这样修改之后,你按W/S/A/D就能正常控制小海龟上下左右移动啦~

备注:内容来源于stack exchange,提问作者Jonan Vos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 03:18:15