我想寫一段代碼,需要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'後面)。 –