Python 随机程序无法运行

标签 python if-statement random 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.")

如果你不知道它是做什么的,它有机会给你一个虚拟的 PSP、Wii U 等等。但它所做的只是打印“您赢得了 Sony PSP”或“这不是您的幸运日,请再试一次”。怎么了?有任何修复吗?

最佳答案

把最大的数放在前面:

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。

关于Python 随机程序无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29222685/

相关文章:

python - 迄今为止的奇怪日期字符串

python - 如何从 pandastable 保存数据?

javascript - 检查整数是否以 0 结尾

python - 从 python 使用 GLib 时,g_log_set_handler 的 python 等效项是什么

python - Flasks - render_template 不渲染 html 页面

java - java中的else出现语法错误

javascript - 如何停止对 for if 中变量的归因

linq - NHibernate - 使用 LINQ 选择随机记录数

c# - "Reset"类中随机

python - 在Python中使用random时是否需要调用seed()?