我试图为乌龟制作函数,以使其非常容易绘制形状,并且代码如下所示
import turtle as t
def square():
tw = t.Screen()
for i in range(4):
t.forward(100)
t.right(90)
tw.exitonclick()
def triangle():
tw = t.Screen()
for i in range(3):
t.forward(100)
t.right(120)
tw.exitonclick()
def star():
tw = t.Screen()
for i in range(5):
t.forward(150)
t.right(144)
tw.exitonclick()
当我在shell中运行此代码时,会遇到一个问题...
>>> square()
>>> triangle()
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
triangle()
File "C:\Users\Manop\Desktop\XENON\turtleg.py", line 11, in triangle
t.forward(100)
File "<string>", line 5, in forward
turtle.Terminator
>>> star()
>>> square()
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
square()
File "C:\Users\Manop\Desktop\XENON\turtleg.py", line 5, in square
t.forward(100)
File "<string>", line 5, in forward
turtle.Terminator
>>>
无法解决问题所在,因为我什至使用exitonclick()
最佳答案
您的乌龟程序的结构不正确。您不需要这样做:
tw = t.Screen()
...
tw.exitonclick()
在每个功能中。
Screen()
只需要调用一次; exitonclick()
只能被调用一次。尝试以下重组:import turtle as t
def square():
for i in range(4):
t.forward(100)
t.right(90)
def triangle():
for i in range(3):
t.forward(100)
t.right(120)
def star():
for i in range(5):
t.forward(150)
t.right(144)
t.penup()
t.goto(150, 150)
t.pendown()
square()
t.penup()
t.goto(-150, 150)
t.pendown()
triangle()
t.penup()
t.goto(150, -150)
t.pendown()
star()
screen = t.Screen()
screen.exitonclick()
如果要交互执行代码,也可以。只需将所有内容放在函数定义之后,以交互方式将其加载到Python中并执行以下操作:
>>> star()
或任何您想运行的东西。您不需要调用
Screen()
,并且在交互式工作时exitonclick()
没有任何意义。