Как я могу перемещать черепах, созданных в другой функции в Python? - PullRequest
0 голосов
/ 02 марта 2019

Я очень плохо знаком с работой с 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 ]

0 голосов
/ 03 марта 2019

опция 3:

Черепахи и экранный объект являются глобальными объектами по дизайну пакета черепах.(Черепаха, локальная для функции, не возвращается, когда функция возвращается.) Просто сделайте их глобальными и получите к ним глобальный доступ или передайте их туда, где они нужны:

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)
0 голосов
/ 02 марта 2019

У вас есть 2 варианта:

вариант 1:

вернуть переменную из первого метода и отправить ее во второй метод:

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()
...