2017-02-18 72 views
0

要到這一點,我已經修改了120個不同的顏色TextStim(不同顏色的字)項目名爲「試驗名單。我將循環「試驗」來逐一呈現這些刺激。但是,根據我使用的循環,它們已按照順序修改爲此列表。理想情況下,我需要將它們隨機化,以便當它們出現時。 我曾嘗試:隨機化爲了

進口隨機

試驗= random.shuffle(試驗)

,但我得到的是類型錯誤:「NoneType」對象不是可迭代...我認爲它有話這樣做是因爲列表中的刺激類型存儲爲錯誤的變量類型。出於同樣的原因,當我嘗試查找每個演示文稿的試用編號時(對於試用中的c:... trialnum = len(c)),因此我可以將試用編號與響應一起存儲,但我收到一條消息以這種形式迭代。基本上我覺得這兩個問題有一些根本的聯繫。

任何幫助,將不勝感激

謝謝!

+0

請粘貼代碼,你創建'試驗'。它看起來不是一個列表,而是「無」。您是否在洗牌之前嘗試印刷「試用版」以確認此事? –

+0

試驗= [] ... .... .... .... ....爲 一個在範圍(0,15): trials.append(redcong) trials.append(blucong) 對於範圍(0,5)中的b:(0,5): trials.append(redincongb) trials.append(redincongg) trials.append(redincongy) trials.append(bluincongr) trials.append(bluincongg) trials.append(bluincongy) trials.append(greincongr) trials.append(greincongb)(yelincong) –

+0

其中每個附加項例如, redcong是一種刺激類型,循環決定了最終列表中每種刺激類型的數量。 –

回答

1

這是因爲random.shuffle洗牌到位,並返回None(這就是爲什麼你會得到關於NoneType一個錯誤),所以做

random.shuffle(pairs) 

,而不是

pairs = random.shuffle(pairs) 

作爲一般性評論,你不會生成大量的TextStims,而是生成一個,然後在運行實驗時更新它。看起來你正在做一個Stroop實驗或類似的東西。所以做這樣的事情:

# General setup 
import random 
from psychopy import visual, event 
win = visual.Window() 

# A TextStim and five of each word-color pairs 
stim = visual.TextStim(win) 
pairs = 5 * [('blue', 'blue'), ('red', 'blue'), ('green', 'yellow'), ('red','red')] 
random.shuffle(pairs) 

# Loop through these pairs 
for pair in pairs: 
    # Set text and color 
    stim.text = pair[0] 
    stim.color = pair[1] 

    # Show it and wait for answer 
    stim.draw() 
    win.flip() 
    event.waitKeys() 
+0

非常感謝!你知道任何有關圍繞: SyntaxError:不能分配給文字錯誤信息?我試圖打印出按鍵所指的顏色,而不是按鍵本身,但是當我嘗試分配它時.......'f'='紅色'.......... .....我收到錯誤信息。感謝您的時間 –

+0

做'f ='紅''。您不能將值分配給字符串。將其分配給一個變量。 –