我正在创建一个概率学习任务。它有一个学习阶段,这是我目前正在准备使用构建器界面与PsychoPy中的自定义代码。学习阶段在称为practice
的循环中至少进行了60次试验。
除了用于向参与者提供反馈的正确答案之外,还有三个条件可以决定学习阶段是否可以完成。达到标准后,培训阶段将终止。
我需要附加三个变量并保持分数的计数。我已经创建了3个变量(类似于resp.corr变量),专门为这三个条件计算。代码放在'end routine'部分中,因为在前面的部分中还没有定义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
这工作正常。我将变量resp1,resp2和resp3添加到excel输出。我检查了,他们都是正确计算的。
所以我知道我需要在列表中附加这些变量,并使用以下代码:
结束例程
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完全相同。
我不确定为什么列表没有正确添加,我将非常感谢所有的帮助!我现在已经被困在这个任务上太久了,我迫不及待地想完成它。
您没有显示如何初始化列表resplist1
等。我的猜测是您在“开始例程”选项卡中这样做。这将不断重置它们,以便它们永远不会包含多个值。
如果是这样,请将其初始化转移到“开始实验”选项卡,这样您就不会在每次试验中丢失新附加的值。
当你有一个实际包含多个元素的列表时,最简单的计算方法是将其转换为numpy
(导入为np
)数组,该数组允许矢量化操作,例如:
sum_1 = np.array(resplist1).sum()