我在Psychopy上创建了一个任务,其中从罐子中抽出珠子。绘制50个不同的珠子,并且在每个珠子之后,要求参与者进行概率评级。该任务从excel文件循环,但是需要很长时间才能完成50个评级。我希望得到前10个珠子的评级。然后为第二个珠子绘制一个等级,直到绘制出20个珠子。然后对于接下来的30个珠子,直到第50个珠子只要求每五个珠子的评级(我真的很新编码,抱歉这可能提前有多么不正确)。 我写过这样的代码然而不幸的是它不起作用? (在没有评级的转弯处,我试图用键盘响应来触发序列中的下一个事物出现) -
for row_index, row in (beads_params_pinkbluegreyratingparamters.xlsx):
if row(0:10) and t >= 0.0 and rating.status == NOT_STARTED:
break
rating.tStart = t # underestimates by a little under one frame
rating.frameNStart = frameN # exact frame index
rating.setAutoDraw(True)
continueRoutine &= rating.noResponse # a response ends the trial
elif row(12:20:2) and t >= 0.0 and rating.status == NOT_STARTED:
break
rating.tStart = t # underestimates by a little under one frame
rating.frameNStart = frameN # exact frame index
rating.setAutoDraw(True)
continueRoutine &= rating.noResponse
elif rows.event.getkeys, row(11:19:2):
elif len(theseKeys) > 0:
break
key_resp_2.keys = theseKeys [-1]
key_resp_2.rt = key_resp_2.clock.getTime()
continueRoutine = False
elif row(20:50:5) and t >= 0.0 and rating.status == NOT_STARTED:
break
rating.tStart = t # underestimates by a little under one frame
rating.frameNStart = frameN # exact frame index
rating.setAutoDraw(True)
continueRoutine &= rating.noResponse
rows.event.getKeys, row[21, 22, 23, 24, 26, 27, 28, 29, 31, 32, 33, 34, 36, 37, 38 ,39, 41, 42, 43, 44, 46, 47, 48, 49]:
elif len(theseKeys) > 0:
key_resp_2.Keys = theseKeys [-1]
key_resp_2.rt = key_resp_2.clock.getTtime()
continueRoutine = False
答案 0 :(得分:1)
你应该只循环一次,但是在一个循环中执行所有检查:
for row_index, rows in (beads_params_pinkbluegreyratingparamters.xlsx):
if (row_index < 10):
rows.ratingscale(0:10)
elif (row_index >=10 and row_index <20):
rows.ratingscale(12:20:2)
rows.key_resp_2(11:19:2)
elif (row_index >=20):
rows.ratingscale(25:50:5)
rows.key_resp_2[21, 22, 23, 24, 26, 27, 28, 29, 31, 32, 33, 34, 36, 37, 38, 39, 41, 42, 43, 44, 46, 47, 48, 49]
请注意,代码中存在一些语法错误,例如: rows.key_resp_2(11:19:2)
没有意义。