【问题标题】:How do I select whether the routine continues based on the participant's response?如何根据参与者的反应选择例程是否继续?
【发布时间】:2018-10-20 14:42:36
【问题描述】:

我想在 PsychoPy Builder 中创建一个实验,根据参与者的键盘响应有条件地向他们显示第二个例程。

在任务中,我有一个循环,首先通过一个例程,参与者有三个选项来响应(“左”、“右”、“下”),并且只有当他们选择“左”时,不管正确回答,如果他们看到第二个例程要求后续问题做出回应。然后循环应该每次都以例程 1 重新开始。

我已经尝试在“开始实验”部分中使用一些代码:

if response.key=='left':
    continueRoutine=True
elif response.key!='left':
    continueRoutine=False

但在这里我收到一条错误消息,提示未定义 response.key。

【问题讨论】:

    标签: loops conditional psychopy routines


    【解决方案1】:

    假设您的键盘组件实际上称为response,那么您要查找的属性称为response.keys。它是复数的,因为它返回一个列表而不是单个值。这是因为它能够存储多个按键。即使您只指定一个响应,它仍将作为仅包含该单个响应的列表返回(例如 ['left'] 而不是 'left')。因此,您要么只需要从该列表中提取一个元素(例如response.keys[0])并对其进行测试,要么使用if 'left' in response.keys 之类的构造来检查列表内部。

    其次,您不需要检查将True 分配给continueRoutine,因为它在例程开始时默认为True。因此,只有将其设置为 False 才会导致任何操作。所以你可以简单地做这样的事情:

    if not 'left' in response.keys:
        continueRoutine = False
    

    最后,对于 PsychoPy 特定的问题,您可能会通过 https://discourse.psychopy.org 的专用论坛获得更好的支持,因为它允许比 SO 的单一问题/答案结构进行更多的来回讨论。

    【讨论】:

    • 非常感谢。我忘记了 Psychopy 论坛甚至存在。非常感谢。
    • 当然。如果对您有用,请将答案标记为“已接受”,以作为未来读者的指南。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 2016-07-28
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多