我有以下代码,并且协助是使用界面进行动画,其中一块墙的坐标变化(从0,0到0,1等)当你按左箭头键时帧速率减小,当按下右键时,帧速率增加。当按压g时,墙应该变成蛇。
但是,我不明白我如何使用for循环中def的变量。
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()
答案 0 :(得分:2)
首先,修复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()
答案 1 :(得分:0)
在函数内创建的任何变量只能在该函数中使用。但是,正如它现在看来,你的函数是返回变量,这基本上就是函数的值。所以:
def timestwo(x):
print x*2
print timestwo(4)
这将返回8,因为我使用参数4打印函数timestwo,因此返回值将为8,因此将timestwo(4)设置为8。
答案 2 :(得分:0)
您无法从函数中获取变量,它是该函数的本地变量。但是,您可以使用global
关键字在全局INTO函数中获取变量。例如:
numberone = 12
def print(i):
global numberone
return print(str(i))