我正在创建一个概率学习任务。它具有学习阶段,这是我目前正在使用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完全相同。
我不确定为什么列表未正确添加,我将不胜感激!我在这项任务上坚持了太久了,我迫切希望完成它。
答案 0 :(得分:1)
您没有显示如何初始化列表resplist1
等。我想您是在“开始例程”选项卡中进行的。这将不断重置它们,以便它们永远不会包含多个值。
如果是这样,请将其初始化移至“开始实验”标签,这样您就不会在每个试验中都丢失新添加的值。
当列表实际上包含多个元素时,最简单的计算方法是将其转换为numpy
(导入为np
)数组,该数组允许向量化操作,例如:
sum_1 = np.array(resplist1).sum()