如何移动在 Python 的不同函数中创建的海龟?
How can I move turtles created in a different function in Python?
我对使用 python
和一般编码还很陌生,但过去几天我一直在使用 turtle
。我正在尝试创建几个函数,其中其他函数移动在不同函数中创建的海龟。例如:
import turtle as t
def setUp():
t.setup(900,600)
t.colormode(255)
win = t.Screen()
def turtles():
t1 = t.Turtle()
t1.shapesize(1.5,1.5,0)
t1.color('red')
t1.pensize(3)
t1.shape('turtle')
def moveTurtle():
t1.forward(50)
setUp()
turtles()
moveTurtle()
在我这里的示例中,当 python
下降到 moveTurtles()
时,t1
未被识别,因为它是在之前的函数中创建的。如果有人可以让我了解如何去做这件事,我将非常感激。谢谢!
您有 2 个选择:
选项 1:
return 来自第一种方法的变量并将其发送到第二种方法:
import turtle as t
def setUp():
t.setup(900,600)
t.colormode(255)
win = t.Screen()
def turtles():
t1 = t.Turtle()
t1.shapesize(1.5,1.5,0)
t1.color('red')
t1.pensize(3)
t1.shape('turtle')
return t1
def moveTurtle(t1):
t1.forward(50)
setUp()
moveTurtle(turtles())
选项 2:
使用不推荐但可用的全局变量:
import turtle as t
t1 = None
def setUp():
t.setup(900,600)
t.colormode(255)
win = t.Screen()
def turtles():
global t1
t1 = t.Turtle()
t1.shapesize(1.5,1.5,0)
t1.color('red')
t1.pensize(3)
t1.shape('turtle')
def moveTurtle():
t1.forward(50)
setUp()
turtles()
moveTurtle()
选项 3:
海龟和屏幕对象是海龟包设计的全局实体。 (当函数 returns 时,函数本地的 turtle 不会被回收。)只需将它们设为全局,然后全局访问它们或将它们传递到需要它们的地方:
from turtle import Screen, Turtle
def setUp(w):
w.setup(900, 600)
w.colormode(255)
def turtles(t):
t.shapesize(1.5, 1.5, 0)
t.color('red')
t.pensize(3)
t.shape('turtle')
def moveTurtle(t):
t.forward(50)
win = Screen()
t1 = Turtle()
setUp(win)
turtles(t1)
moveTurtle(t1)
我对使用 python
和一般编码还很陌生,但过去几天我一直在使用 turtle
。我正在尝试创建几个函数,其中其他函数移动在不同函数中创建的海龟。例如:
import turtle as t
def setUp():
t.setup(900,600)
t.colormode(255)
win = t.Screen()
def turtles():
t1 = t.Turtle()
t1.shapesize(1.5,1.5,0)
t1.color('red')
t1.pensize(3)
t1.shape('turtle')
def moveTurtle():
t1.forward(50)
setUp()
turtles()
moveTurtle()
在我这里的示例中,当 python
下降到 moveTurtles()
时,t1
未被识别,因为它是在之前的函数中创建的。如果有人可以让我了解如何去做这件事,我将非常感激。谢谢!
您有 2 个选择:
选项 1:
return 来自第一种方法的变量并将其发送到第二种方法:
import turtle as t
def setUp():
t.setup(900,600)
t.colormode(255)
win = t.Screen()
def turtles():
t1 = t.Turtle()
t1.shapesize(1.5,1.5,0)
t1.color('red')
t1.pensize(3)
t1.shape('turtle')
return t1
def moveTurtle(t1):
t1.forward(50)
setUp()
moveTurtle(turtles())
选项 2:
使用不推荐但可用的全局变量:
import turtle as t
t1 = None
def setUp():
t.setup(900,600)
t.colormode(255)
win = t.Screen()
def turtles():
global t1
t1 = t.Turtle()
t1.shapesize(1.5,1.5,0)
t1.color('red')
t1.pensize(3)
t1.shape('turtle')
def moveTurtle():
t1.forward(50)
setUp()
turtles()
moveTurtle()
选项 3:
海龟和屏幕对象是海龟包设计的全局实体。 (当函数 returns 时,函数本地的 turtle 不会被回收。)只需将它们设为全局,然后全局访问它们或将它们传递到需要它们的地方:
from turtle import Screen, Turtle
def setUp(w):
w.setup(900, 600)
w.colormode(255)
def turtles(t):
t.shapesize(1.5, 1.5, 0)
t.color('red')
t.pensize(3)
t.shape('turtle')
def moveTurtle(t):
t.forward(50)
win = Screen()
t1 = Turtle()
setUp(win)
turtles(t1)
moveTurtle(t1)