【问题标题】:Python randomized program not working outPython随机程序不起作用
【发布时间】:2015-05-27 04:15:01
【问题描述】:

我在我的 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”或“不是你的幸运日,再试一次”。怎么了?有什么修复吗?

【问题讨论】:

    标签: python if-statement random fall-through


    【解决方案1】:

    把最大的数放在前面:

    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&gt; 400 那么它也是 &gt; 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 &lt;= WinorLose &lt; 500 等.. 可以按任何顺序工作,因为我们正在设置一个具有下限和上限的范围,因此除非WinorLose 在该范围内,否则该语句不会评估为True。

    【讨论】:

      【解决方案2】:

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

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

      elif WinorLose &gt; 200:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-12
        • 2011-01-19
        • 2010-11-05
        • 1970-01-01
        相关资源
        最近更新 更多