无法在心理方面附加变量

时间:2019-03-14 19:38:44

标签: python psychopy

我正在创建一个概率学习任务。它具有学习阶段,这是我目前正在使用PsychoPy中带有自定义代码的构建器界面准备的阶段。学习阶段在称为practice的循环中至少进行了60次试验。

除了用于向参与者提供反馈的正确答案之外,还可以通过三种条件来确定学习阶段是否可以完成。达到标准后,培训阶段将终止。

我需要附加三个变量并保持分数计数。 我创建了3个变量(类似于resp.corr变量),这些变量是专门针对这三个条件计算的。该代码位于“结束例程”部分,因为之前的resp部分尚未定义。

结束常规

if (resp.keys == letterA):
    resp1 = 1
else:
    resp1 = 0

if (resp.keys == letterC):
    resp2 = 1
else:
    resp2 = 0

if (resp.keys == letterE):
    resp3 = 1
else:
    resp3 = 0

这很好。我在Excel输出中添加了变量resp1,resp2和resp3。我检查了一下,它们都计算正确了。

所以我知道我需要将这些变量添加到列表中,并且使用了以下代码:

结束例程

resplist1.append(resp1)
resplist2.append(resp2)
resplist3.append(resp3)

我还将这些列表保存在excel输出中,以检查它们的计算是否正确。我使用了以下代码:

结束例程

practice.addData('resplist1', resplist1)

practice.addData('resplist2', resplist2)

practice.addData('resplist3', resplist3)

很遗憾,replist1,replist2和replist3无法追加列表。而是将resp1,resp2和resp3的值打印在[]中。底部图片:

imageimage.png1635×655 34.1 KB

我还检查了是否有可能计算replist1,replist2和replist3的总和,并且您可以猜测它不起作用。计算值与resp1,resp2和resp3完全相同。

我不确定为什么列表未正确添加,我将不胜感激!我在这项任务上坚持了太久了,我迫切希望完成它。

https://i.stack.imgur.com/aXW60.png

1 个答案:

答案 0 :(得分:1)

您没有显示如何初始化列表resplist1等。我想您是在“开始例程”选项卡中进行的。这将不断重置它们,以便它们永远不会包含多个值。

如果是这样,请将其初始化移至“开始实验”标签,这样您就不会在每个试验中都丢失新添加的值。

当列表实际上包含多个元素时,最简单的计算方法是将其转换为numpy(导入为np)数组,该数组允许向量化操作,例如:

sum_1 = np.array(resplist1).sum()