If/else 语句在 OpenSesame 中没有按预期正常工作

If/else statement is not working properly in OpenSesame as expected

我正在使用基于 python 的 OpenSesame 构建实验。除了一件事,整个实验工作正常。我编写了一个内联 python 脚本来向参与者提供有条件的听觉反馈。在第一种情况下,如果 2 个变量的总和大于 0(工作正常),则应该出现 'Sound_Win.wav' 反馈。在第二种情况下,如果 2 个变量的总和小于 0(工作正常),则应该出现 'Sound_Lose.wav' 反馈。在第三个条件下,如果 2 个变量的总和等于 0,则应该出现 'Sound_No.wav' 反馈。但是,使用以下代码,第三个条件是播放 'Sound_Lose.wav' 反馈而不是 'Sound_No.wav'反馈(错误)。任何帮助将不胜感激。

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()

据我对代码的理解,不是写第二个 if,而是从头开始,在第一个 if 语句中按一个制表符将其缩进,然后按照第二个 if 语句编写 elif 语句,因为第二个只有在第一个不正确或错误时才会发生!!

如果我理解有误,请告诉我!! 我一定会很期待的!!

谢谢

如果我理解正确,那么 losswin 只是整数,所以您的代码应该是:

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()

您只需将 losswin 相加即可。此外,由于整数的定义非常严格,因此使用这样的 if/elif/else 链涵盖了所有可能性。