我正在尝试跟随“Think Python”一书中的练习并遇到一个试图让乌龟工作的问题。 Here is the exercise I'm on. (4.1)
他们希望我执行的代码如下所示:
import turtle
bob = turtle.Turtle()
print(bob)
turtle.mainloop()
bob.fd(100)
bob.lt(90)
bob.fd(100)
但是当我执行它时,乌龟没有移动,当我关闭窗口时出现以下错误:
Traceback (most recent call last):
File "C:\Users\Phil\PycharmProjects\untitled\mypolygon.py", line 6, in <module>
bob.fd(100)
File "C:\Python\3.5\lib\turtle.py", line 1637, in forward
self._go(distance)
File "C:\Python\3.5\lib\turtle.py", line 1605, in _go
self._goto(ende)
File "C:\Python\3.5\lib\turtle.py", line 3158, in _goto
screen._pointlist(self.currentLineItem),
File "C:\Python\3.5\lib\turtle.py", line 755, in _pointlist
cl = self.cv.coords(item)
File "<string>", line 1, in coords
File "C:\Python\3.5\lib\tkinter\__init__.py", line 2308, in coords
self.tk.call((self._w, 'coords') + args))]
_tkinter.TclError: invalid command name ".1395635997272"
我不确定调试器在说什么,在我弄清楚哪里出错之前我无法继续。任何帮助将不胜感激。
答案 0 :(得分:1)
当bob.fd(100)
调用开始循环(顾名思义)时,永远不会到达turtle.mainloop()
行(以及所有后续行)。
更改您的代码,使其显示为:
import turtle
bob = turtle.Turtle()
print(bob)
bob.fd(100)
bob.lt(90)
bob.fd(100)
一切都应该有效。
(由于您没有处理程序中的任何事件,我建议您暂时不要调用turtle.mainloop()
;如果您确实想要按照本书的示例进行操作,请务必按照以下说明操作:“要绘制一个直角,请将这些行添加到程序中(创建bob之后和调用mainloop之前)“)。