-1

I am using python-based OpenSesame for building an experiment. The whole experiment is working fine except for one thing. I wrote an inline python script to give conditional auditory feedback to the participants. In the first condition, the 'Sound_Win.wav' feedback should occur if the sum of 2 variables is more than 0 (working fine). In the second condition, the 'Sound_Lose.wav' feedback should occur if the sum of 2 variables is less than 0 (working fine). In the third condition, the 'Sound_No.wav' feedback should occur if the sum of 2 variables is equal to 0. However, using the following code, the third condition is playing 'Sound_Lose.wav' feedback instead of 'Sound_No.wav' feedback (error). Any help would be highly appreciated.

if [loss]+[win] > 0:
    src = pool['Sound_Win.wav']
    my_sampler = Sampler(src, volume=1.0)
    my_sampler.play()
           
if [loss]+[win] < 0:
    src = pool['Sound_Lose.wav']
    my_sampler = Sampler(src, volume=1.0)
    my_sampler.play()

elif [loss]+[win] = 0:
    src = pool['Sound_No.wav']
    my_sampler = Sampler(src, volume=1.0)
    my_sampler.play()
Adarsh
  • 3
  • 2
  • 2
    There is no way that `[loss]+[win]` could ever be `[0]`. Please give some example values of `loss` and `win`. – quamrana Mar 12 '22 at 16:32
  • In a single trial, if a participant wins $50 (value +50), and subsequently lose $50 (value -50). The total sum will be $0 (50 + (-50)) – Adarsh Mar 13 '22 at 12:35
  • 1
    This isn't even syntactically correct — the last `if` statement has a `=` where there ought to be a `==`— and after fixing that, there's still the issue of comparing lists (`[loss]+[win]`) with integers. Please provide a [minimal, complete and reproducible example](https://stackoverflow.com/help/minimal-reproducible-example). – Ture Pålsson Mar 13 '22 at 12:49

2 Answers2

0

From what I am understand from the code , instead of writing the second if , from the starting , press a tab to indent it inside the first if statement and then write the elif statement as per the second if statement , because the second one only happen if the first one goes incorrect or wrong !!

If I understood it wrong , then please do let me know !! I'll surely look forward into it !!

Thanks

Sagar Rai
  • 7
  • 3
0

If I understand you correctly then loss and win are simply integers, so your code should be:

if loss + win > 0:
    src = pool['Sound_Win.wav']
    my_sampler = Sampler(src, volume=1.0)
    my_sampler.play()
           
elif loss + win < 0:
    src = pool['Sound_Lose.wav']
    my_sampler = Sampler(src, volume=1.0)
    my_sampler.play()

else:
    src = pool['Sound_No.wav']
    my_sampler = Sampler(src, volume=1.0)
    my_sampler.play()

You simply add together loss and win. Also since integers are very closely defined, then using an if/elif/else chain like this covers all the possibilities.

quamrana
  • 37,849
  • 12
  • 53
  • 71
  • It works. Thank You! I am not a programmer. I am simply trying to use some scripts for building a research experiment. Thatswhy there were syntactic issues. – Adarsh Mar 13 '22 at 20:05