3

我在我的树莓派上做了一个基本的随机程序,它有点像这样。

import random
print ("Welcome to the PC Expo's new game, PC Dispenser, what will you win?")
WinorLose = random.randint(1, 1000)
if WinorLose <100:
    print ("You won a Nintendo Wii.")
elif WinorLose >200:
    print ("You won a Sony PSP.")
elif WinorLose > 300:
    print ("You won a Nintendo Wii U.")
elif WinorLose > 400:
    print ("You won a Sony PS Vita.")
else:
    print ("Not your lucky day, Try again.")

print ("Thank you for the visit.")

如果您不知道它的作用,它有机会为您提供虚拟 PSP、Wii U 等。但它所做的只是打印“你赢得了索尼 PSP”或“不是你的幸运日,再试一次”。怎么了?有什么修复吗?

4

2 回答 2

6

把最大的数放在第一位:

WinorLose = random.randint(1, 1000)
print(WinorLose)
if WinorLose > 400:
    print ("You won a Sony PS Vita.")
elif WinorLose > 300:
    print ("You won a Nintendo Wii U.")
elif WinorLose > 200:
    print ("You won a Sony PSP.")
elif WinorLose < 100:
    print ("You won a Nintendo Wii.")   
else:
    print ("Not your lucky day, Try again.")

如果WinorLose是,> 400那么它也是> 100,所以你总是会打印第一条语句。

您可能还想使用上限和下限:

if 400 <= WinorLose < 500:
    print ("You won a Sony PS Vita.")
elif 300 <= WinorLose < 400:
    print("You won a Nintendo Wii U.")
elif 200 <= WinorLose < 300:
    print ("You won a Sony PSP.")
elif  WinorLose < 200:
    print ("You won a Nintendo Wii.")    
else:
    print ("Not your lucky day, Try again.")

使用if 400 <= WinorLose < 500etc.. 可以按任何顺序工作,因为我们正在设置一个具有下限和上限的范围,因此除非WinorLose在该范围内,否则该语句不会评估为 True。

于 2015-03-24T00:06:54.143 回答
0

我知道上面有一个答案,但我想它没有解释为什么你的答案不起作用,所以我会向你指出,这样你下次就可以避免了。

让我们考虑问题发生在哪里。

elif WinorLose > 200:

这对于任何大于 200 的数字都是正确的,因此在您的情况下为 201..1000;因此 if 语句已完成,因为条件已满足。对于您的代码中遵循的其他条件,这也将是相同的。

希望这能解释为什么你的没有按预期工作。

于 2015-03-24T00:40:35.440 回答