Python随机程序无法解决

coo*_*man 3 python random if-statement fall-through

我在我的Raspberry Pi上做了一个基本的随机程序,它有点像这样.

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.")
Run Code Online (Sandbox Code Playgroud)

如果你不知道它做了什么,它有机会给你一个虚拟的PSP,Wii U等等.但它所做的只是打印"你赢得索尼PSP",或"不是你的幸运日,再试一次".怎么了?任何修复?

Pad*_*ham 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.")
Run Code Online (Sandbox Code Playgroud)

如果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.")
Run Code Online (Sandbox Code Playgroud)

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