Trouble with resetting loop.
Hi OS forum,
I'm having trouble with what seems to be a rather straightforward task. I have a trial sequence where participants have to enter a response and if they do not get a correct response, the loop repeats itself until they get all 8 trials in a row correct (so the Loop that contains the sequence just has 8 rows). The structure looks like this:
I've been able to implement the repetition using an inline script (TrainList_CheckCorrect):
if var.correct == 0:
items.execute(u'TrainListLoop)
This gets the loop to repeat just fine based on incorrect responses.
The issue is when the criterion to continue (i.e getting 8 trials in a row correct, so completing all the rows in TrainListLoop) is reached, I keep getting a Python
Traceback Error/TypeError (see below). This doesn't arise if I get all 8 trials correct on the first go.
So I suspect it's something to do with Python not liking the TrainListLoop running more than once, since it's 'Repeat' variable is just set to 1. I had a look at some of the other forum posts on this and try doing something with the outer loop and adding a break-if statement, but that didn't quite work (or at least I'm not sure I was doing it correctly). It's probably something really simple that I'm missing...
Any suggestions?
Thanks very much in advance!
Adam
Comments
Hi Adam,
There is also a
repeat_cycle
item in OpenSesame. Would that offer an easy solution? In this case, you have to place the `repeat_cycle` item in TrainListSeq below (or after) TrainListLoop. You can then specify in the condition field in repeat_cycle when the current cycle (or sequence) should be repeated, which in your case is whenever less than 8 correct responses are given.Hi Daniel,
Thanks for the response (sorry for the slow response on my end!). I ended up using a suggestion in a different post to set a higher loop 'TrainList' to repeat a very large number of times, then break under some condition. It turns out I couldn't actually specify the final line of code (items.execute...) in my snippet above; somehow that doesn't quite work with that implementation. So it's working now.
I might also give your suggestion a go - always good to know if this can be implemented in more than one way!
Thanks again!
Adam