Прерывание цикла и ожидание продолжения человеком

Привет, я провожу эксперимент, который состоит из 120 испытаний. я хочу добавить перерыв в цикле каждые 30 испытаний и ждать, пока участники нажмут клавишу, когда они будут готовы продолжить. мой код для цикла выглядит так

start.draw()
win.flip()
event.waitKeys(keyList=['return'])

win.flip()

cross.draw()
win.flip()
event.waitKeys(keyList=['5'])


for stim in stroop:
    colour.text = stim[0]
    colour.color = stim[1]
    colour.draw()
    display_time = win.flip()

как я могу добавить перерыв в этом цикле for? Спасибо!!


person codebbe    schedule 09.03.2020    source источник


Ответы (1)


Вы можете использовать enumerate для отслеживания количества выполненных итераций:

for idx, stim in enumerate(stroop):
    # The +1 makes it so we avoid asking the user's input on first iteration.
    if (idx + 1) % 30 == 0:
        event.waitKeys(keyList=['return'])
    [...]

Кстати, breaks в питоне означает выход из цикла. То, что вы хотите сделать, это скорее «ждать ввода пользователя».

person Cal    schedule 09.03.2020
comment
Спасибо Вам за информацию. Я не могу найти это в правильном месте. это идет под color.draw или win.flip или где-то еще? - person codebbe; 09.03.2020
comment
Первая строка заменяет ваш текущий for stim in stroop:. Где вы поместите остальные, зависит от того, когда вы хотите, чтобы пауза произошла: до или после того, как стимулы нарисованы? - person Michael MacAskill; 10.03.2020
comment
Спасибо, теперь работает!! я хочу добавить экран с надписью «Нажмите ENTER, чтобы продолжить», который я сделал так continue1= visual.TextStim(win, text = 'Press ENTER to continue', pos = (0,0), color=(1,1,1)), чтобы добавить это в цикл, continue1.draw() будет идти до event.waitKeys() - person codebbe; 11.03.2020