我在我的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.")
如果你不知道它做了什么,它有可能给你一个虚拟的PSP,Wii U等等。但它所做的只是打印“你赢得索尼PSP”,或“不是你的幸运日,再试一次”。怎么了?任何修复?
答案 0 :(得分: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 < 500
等..将以任何顺序工作,因为我们正在设置一个具有下限和上限的范围,因此除非WinorLose
在该范围内,否则该语句将不会计算为True。
答案 1 :(得分:0)
我知道上面有一个答案,但我想这并没有解释为什么你的工作不起作用,所以我会指出你这样你下次就可以避免它。
让我们考虑问题发生的位置。
elif WinorLose > 200:
对于任何大于200的数字都是如此,因此在您的情况下为201..1000;因此if语句已经完成,因为已满足条件。对于代码中的其他条件,这也是相同的。
希望这能解释为什么你的工作没有按预期工作。