If statement 心理变态:关键反应滞后,导致脚本出现问题

If statement 心理变态:关键反应滞后,导致脚本出现问题,if-statement,lag,psychopy,If Statement,Lag,Psychopy,我有一个实验的组成部分,要求参与者在两周内立即获得10分或更高的分数之间进行选择(分数稍后转换为美元金额,以激励“更高的分数”选择)。以后的金额根据以前的选择而有所不同。参与者将收到他/她在下一个例行程序中刚刚做出的选择的反馈。为了进行设置,我在builder的代码组件中生成了: if key_resp_4.keys == 'left': feedback = 'You chose 10 points immediately' TotalNow = TotalNow + 10

我有一个实验的组成部分,要求参与者在两周内立即获得10分或更高的分数之间进行选择(分数稍后转换为美元金额,以激励“更高的分数”选择)。以后的金额根据以前的选择而有所不同。参与者将收到他/她在下一个例行程序中刚刚做出的选择的反馈。为了进行设置,我在builder的代码组件中生成了:

if key_resp_4.keys == 'left':
    feedback = 'You chose 10 points immediately'
    TotalNow = TotalNow + 10
    add = (amount - 10)/2 
    amount = add + amount
elif key_resp_4.keys == 'right':
    feedback = 'You chose more points in two weeks'
    TotalLater = TotalLater + amount
    amount = (amount + 10)/2 
elif key_resp_4.keys in ['', [], None]:
    feedback = 'You did not make a choice. No reward given.'
    amount = amount
“amount”变量生成一个数值,该数值根据左侧或右侧响应进行更新。“TotalNow”和“TotalAter”记录每种情况下获得的总分,并显示在下一个屏幕中。这些变量工作得很好

我的问题在于反馈变量。为了更好地理解正在发生的事情,我已经将脚本运行了很多次。对于大多数试验(虽然不是全部)——不管我是否按下了键——反馈屏幕都会打印出指定为非响应的消息:“你没有做出选择……”但奇怪的是。在反馈屏幕上,“TotalNow”/“TotalAter”变量显示的点值表明我确实做出了关键响应,即使“反馈”文本变量报告我没有做出响应。此外,下一次试验将正确显示更新后的“amount”变量

因此,在下一个例程中,键响应和“反馈”变量显示的结果之间似乎存在某种脱节。我怀疑关键的反应可能是滞后的。我怀疑这一点,因为我发现我能够在一次试验中做出两个关键反应(在下一个例行程序中显示的总分中显示的额外分数证明了这一点)。我已经将键响应组件设置为强制结束例程,只存储第一个键,并放弃以前的任何响应。但是,即使使用这些设置,也可以做出两个响应

有人知道为什么会发生这些事件吗?我自己对此感到困惑。非常感谢您的帮助


-Ben

这是一个相当不令人满意的答案,但我首先按照Jonas的建议解决了这个问题,然后删除了一个通过实验编程而过时的无关循环。这并没有明确回答为什么关键响应会滞后的问题,但现在看来效果不错。

有一些可能的解释。代码组件是否在按键4之后的例程中?它是在例行程序的顶部还是在显示
反馈
金额
的文本之前的例行程序中?如果对其中任何一个都没有,请尝试这样做。代码组件被设置为在收集键4的例程结束时启动。我将代码组件移动到下一个例程的开头,该例程显示反馈变量。数量只是为了下一个循环的目的而更新。此更改后,问题以类似的方式持续存在。键盘组件似乎启动缓慢。所讨论的例程持续一秒钟,并且键盘元素很少在仅仅一次按下(正如它被认为的那样)后工作,除非在一秒钟的时间范围结束时按下。如果你认为这会有所帮助,我可以添加PsychoPy编译的关于在例程中启动按键resp_4的代码。