如何在Stroop实验循环中每30试次添加按键触发的休息环节?
给Stroop实验循环添加每30试次休息的方案
没问题,我来帮你实现这个休息机制!核心思路是跟踪当前完成的试次数,每满30次就插入休息环节,等待被试按键后再继续。具体修改如下:
实现步骤
- 用
enumerate()遍历刺激列表,这样能同时拿到当前试次的索引(从0开始计数) - 每完成30试次时(也就是第30、60、90次试次结束后),弹出休息提示
- 休息环节等待被试按指定按键后,回到实验流程
修改后的完整代码
start.draw() win.flip() event.waitKeys(keyList=['return']) win.flip() cross.draw() win.flip() event.waitKeys(keyList=['5']) # 用enumerate获取试次索引,方便计数 for trial_idx, stim in enumerate(stroop): colour.text = stim[0] colour.color = stim[1] colour.draw() display_time = win.flip() # 每30试次后触发休息,排除最后一次(第120次)实验结束的情况 if (trial_idx + 1) % 30 == 0 and (trial_idx + 1) != 120: # 显示休息提示,若已有现成文本组件可直接替换 rest_prompt = visual.TextStim(win, text="可以休息一下啦!按下回车键继续实验") rest_prompt.draw() win.flip() # 等待被试按键 event.waitKeys(keyList=['return']) # 回到注视点,和实验开始前的流程保持一致 cross.draw() win.flip() event.waitKeys(keyList=['5'])
关键细节说明
enumerate(stroop)返回的trial_idx是从0开始的索引,trial_idx + 1对应实际完成的试次数,判断起来更直观- 加
(trial_idx + 1) != 120是为了避免120次试次全部完成后,还弹出多余的休息提示 - 休息后回到注视点等待按键的逻辑,和实验开头保持一致,能让被试维持稳定的实验节奏
- 如果你的实验里已经定义过提示文本组件,直接替换代码中的
rest_prompt即可,无需重新创建
内容的提问来源于stack exchange,提问作者codebbe
相关产品推荐
相关产品推荐

