Python龟无效命令(来自Think Python书)

时间:2016-05-16 18:40:40

标签: python turtle-graphics

我正在尝试跟随“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"

我不确定调试器在说什么,在我弄清楚哪里出错之前我无法继续。任何帮助将不胜感激。

1 个答案:

答案 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之前“)。

类似的问题hereherehere