我试图为乌龟制作函数,以使其非常容易绘制形状,并且代码如下所示

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()没有任何意义。

10-02 10:52