Python/Psychopy:在函数之间传递信息
Python/Psychopy: passing information between functions
我在两个函数之间传递信息时遇到一些问题。在我的 'trial' 函数中(参见下面的代码),我正在检查按键并期望在按下 'g 或 'h' 键时退出 while 循环。 while 循环依赖于 test=1。在我的 'check_keys' 函数中,只要按下 'g' 或 'h' 键,测试就会切换到 2;然后我希望退出 while 循环。就目前而言,当我按下键时,我可以看到它们正在注册(由于打印语句),但它没有退出 while 循环。让我的主 while 循环看到 'test' 已从我的 'check_keys' 函数中切换到 2 似乎有问题。我尝试将 'test' 更改为全局变量,但我仍然遇到同样的问题。很明显,信息没有在两个函数之间传递。
window = visual.Window([600,600],fullscr=False,color=("black"), allowGUI=True, monitor='testMonitor', units='deg')
global test
def check_keys():
allKeys = event.getKeys(keyList = ('g','h','escape'))
for thisKey in allKeys:
if thisKey == 'g':
print "g"
test = 2
elif thisKey == 'h':
print "h"
test = 2
def trial():
global test
test = 1
while test ==1:
check_keys()
for i in range(1):
trial()
简而言之;尽管我的条件 'test' 变量已更改,但为什么我仍停留在 while 循环中?
干杯,
史蒂夫
您被卡住了,因为您没有在 check_keys() 方法中将测试声明为全局变量。也就是说,你应该做的是 check_keys return test 的值,然后在 main:
中跟踪它
def trial():
test = 1
while test == 1:
test = check_keys()
我在两个函数之间传递信息时遇到一些问题。在我的 'trial' 函数中(参见下面的代码),我正在检查按键并期望在按下 'g 或 'h' 键时退出 while 循环。 while 循环依赖于 test=1。在我的 'check_keys' 函数中,只要按下 'g' 或 'h' 键,测试就会切换到 2;然后我希望退出 while 循环。就目前而言,当我按下键时,我可以看到它们正在注册(由于打印语句),但它没有退出 while 循环。让我的主 while 循环看到 'test' 已从我的 'check_keys' 函数中切换到 2 似乎有问题。我尝试将 'test' 更改为全局变量,但我仍然遇到同样的问题。很明显,信息没有在两个函数之间传递。
window = visual.Window([600,600],fullscr=False,color=("black"), allowGUI=True, monitor='testMonitor', units='deg')
global test
def check_keys():
allKeys = event.getKeys(keyList = ('g','h','escape'))
for thisKey in allKeys:
if thisKey == 'g':
print "g"
test = 2
elif thisKey == 'h':
print "h"
test = 2
def trial():
global test
test = 1
while test ==1:
check_keys()
for i in range(1):
trial()
简而言之;尽管我的条件 'test' 变量已更改,但为什么我仍停留在 while 循环中?
干杯, 史蒂夫
您被卡住了,因为您没有在 check_keys() 方法中将测试声明为全局变量。也就是说,你应该做的是 check_keys return test 的值,然后在 main:
中跟踪它def trial():
test = 1
while test == 1:
test = check_keys()