我想写一段代码,需要200个文本刺激才能被查看1秒一个接着一个,但我不能让我的代码工作。Python - 在循环中使用预定义变量的列表(psychopy)
每次刺激被预定义为一个变量:
redkey = visual.textStim(win, "key", (1.0, -1.0, -1.0)
bluekey = visual.textStim(win, "key", (-1.0, -1.0, 1.0)
我有一个清单200项长,像这样:
x = ['redkey', 'bluekey', 'bluekey', 'redkey'...]
我想写一个for
环路通过列表循环和显示每个变量的第二个(粗略),但我不能让它工作。
win = visual.Window([1024, 768], fullscr = false, allowGUI=false, color = (0.0, 0.0, 0.0))
for item in x:
item.draw()
win.flip()
core.wait(1.0)
当我这样做时,我得到错误:AttributeError: 'str' object has no attribute 'draw'
。
我试着玩vars()
和eval()
但我不能完全弄清楚如何去做。这甚至有可能吗?
你为什么不只是让你的列表包含实际的对象而不是字符串(即,'[redkey,bluekey,...]'而不是'['redkey','bluekey',...]')? – BrenBarn
谢谢!像魅力一样工作。 – Ron
另外,不要将它创建为200个对象引用的文字列表。使用Python来完成繁重的工作:'x = [redkey,blue key] * 100'。然后'shuffle(x)'将其随机化(在'numpy.random import shuffle'后面)。 –