Как использовать переменную из def? в Python

Вопрос: У меня есть следующий код, и вы должны сделать анимацию, используя интерфейс, где часть стены меняет координаты (от 0,0 до 0,1 и т.д.), Когда вы нажимаете клавишу со стрелкой влево, частота кадров уменьшается и когда нажата правая клавиша, частота кадров увеличивается. Затем при нажатии g стена должна превратиться в змею. Однако я не понимаю,

Вопрос:

У меня есть следующий код, и вы должны сделать анимацию, используя интерфейс, где часть стены меняет координаты (от 0,0 до 0,1 и т.д.), Когда вы нажимаете клавишу со стрелкой влево, частота кадров уменьшается и когда нажата правая клавиша, частота кадров увеличивается. Затем при нажатии g стена должна превратиться в змею.

Однако я не понимаю, как я могу использовать переменные, которые должны выходить из def в цикле for.

from ipy_lib import SnakeUserInterface from ipy_lib import Event ui=SnakeUserInterface(3,3) SNAKE=2 WALL=3 def Process_event(event): if event.name == «arrow» : frames(event.data) if event.name == «g»: color = SNAKE else: color = WALL return color def frames(data): frames_per_second=24 if data==»l»: frames_per_second-=0.5 if data==»r»: frames_per_second+=0.5 return frames_per_second for j in range(0,3): for i in range(0,3): event=ui.get_event() Process_event(event) ui.set_animation_speed(frames_per_second) ui.place(i, j,color) ui.show() ui.clear() Лучший ответ:

Вы не можете взять переменную из функции, она локальна для этой функции. Тем не менее, вы можете использовать переменную глобально INTO для функции, использующей ключевое слово global. Пример:

numberone = 12 def print(i): global numberone return print(str(i)) Ответ №1

Во-первых, исправьте отступ в Process_event() чтобы он всегда возвращал значение:

def Process_event(event): if event.name == «arrow» : frames(event.data) if event.name == «g»: color = SNAKE else: color = WALL return color # This line was indented too far

Затем, когда вы вызываете Process_event(event), убедитесь, что вы берете его возвращаемое значение:

for i in range(0,3): event=ui.get_event() color = Process_event(event) # Grab the value here ui.set_animation_speed(frames_per_second) ui.place(i, j,color) ui.show() ui.clear() Ответ №2

Любые переменные, созданные внутри функции, могут использоваться только в этой функции. Однако, поскольку это выглядит прямо сейчас, ваши функции возвращают переменные, и это в основном значение, так сказать, функции. Так:

def timestwo(x): print x*2 print timestwo(4)

Это вернет 8, потому что я печатаю функцию timestwo с аргументом 4, поэтому возвращаемое значение будет равно 8 и, следовательно, устанавливает timestwo (4) – 8.

Оцените статью
Добавить комментарий