在修正列表中随机化TextStim的顺序/在循环中查找迭代的索引(Psychopy)

时间:2017-02-18 14:07:04

标签: python list psychopy

为了达到目的,我将120种不同颜色的TextStim(不同颜色的单词)项目修改为名为“试验”的列表。我将循环通过'试验'逐一呈现这些刺激。但是,根据我使用的循环,它们已按照顺序修改为此列表。理想情况下,我需要将它们随机化,以便在它们出现时。 我试过了:

导入随机

试验= random.shuffle(试验)

但我得到的只是TypeError:'NoneType'对象不可迭代......我认为它与列表中的刺激类型存储为错误的变量类型这一事实有关。出于同样的原因,当我试图找到每个演示文稿的试验编号时(对于试验中的c:... trialnum = len(c))所以我可以将试用版号与响应一起存储,我收到的消息不是以这种形式可迭代。基本上我觉得这两个问题在某些基本方面是相关的。

任何帮助将不胜感激

谢谢!

1 个答案:

答案 0 :(得分: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()