如何让Turtle在坐标(-200, 0)处停止?赋值报错问题排查
解决Python Turtle在指定坐标(-200, 0)处停止的问题
你的代码里有两个核心问题导致无法在目标坐标停止:
- 错误的位置判断逻辑:
t.pos()返回的是包含x、y坐标的元组(比如(-200.0, 0.0)),直接对元组用abs()没有意义,而且abs(...) < -201这个条件永远不可能成立——绝对值结果都是非负数,不可能小于负数。 - 没有针对目标坐标做精准判断:你要回到
(-200, 0),需要分别检查x和y坐标是否接近目标值(因为turtle移动可能存在微小浮点误差,直接判等容易出错)。
下面是修正后的完整代码:
import turtle t = turtle.Turtle() t.speed(20) t.goto(-200, 0) t.color('red') t.fillcolor('yellow') t.begin_fill() t.width(3) while True: t.fd(400) t.lt(170) # 获取当前坐标 current_x, current_y = t.pos() # 判断是否回到目标坐标附近(允许±1的误差) if abs(current_x - (-200)) < 1 and abs(current_y - 0) < 1: t.end_fill() break turtle.mainloop()
关键修正说明:
- 用
current_x, current_y = t.pos()拆分出单独的x、y坐标,方便判断 - 用
abs(current_x - 目标x) < 阈值的方式判断是否接近目标坐标,这里设置的阈值是1,你可以根据需要调整(比如要求更精准就设0.1) - 移除了原代码中无效的判断条件,替换为针对目标坐标的有效逻辑
另外提醒:不要尝试直接给t.pos()赋值(比如t.pos() = (-200, 0)),这是语法错误——pos()是获取位置的方法,要移动到指定位置必须用goto()方法。
内容的提问来源于stack exchange,提问作者HNooB
相关产品推荐
相关产品推荐

