【问题标题】:Program is recognizing every input I give it as correct [duplicate]程序正在识别我给它的每个输入都是正确的[重复]
【发布时间】:2021-02-13 02:59:12
【问题描述】:

我目前正在主持一个在线寻宝游戏,其中一个步骤涉及“展开”干草捆以寻找线索。出于某种原因,每当我测试它时,任何数字都被视为正确。

import random
import time
bale = int(input("Say a number 1-250 to unroll a bale of hay! It will take 45 seconds before you're told if clues are inside of it, so be willing to wait.")
if int(bale) == 63 or 190 or 36 or 106 or 127 or 89 or 84 or 44 or 80 or 124 or 173 or 202 or 224 or 51 or 220:
  print "Wait 45 seconds to unroll the bale."
  time.sleep(15)
  print "30 seconds left..."
  time.sleep(5)
  print "..."
  time.sleep(5)
  print "20 seconds left..."
  time.sleep(10)
  print "10 seconds..."
  time.sleep(5)
  print "5 seconds..."
  time.sleep(1)
  print "4!"
  time.sleep(1)
  print "3!"
  time.sleep(1)
  print "2!"
  time.sleep(1)
  print "1!"
  time.sleep(1)
  print "Yes! There's a clue in here! Send a screenshot of this for confirmation to move on!"
else:
  print "Wait 45 seconds to unroll the bale."
  time.sleep(15)
  print "30 seconds left..."
  time.sleep(5)
  print "..."
  time.sleep(5)
  print "20 seconds left..."
  time.sleep(10)
  print "10 seconds..."
  time.sleep(5)
  print "5 seconds..."
  time.sleep(1)
  print "4!"
  time.sleep(1)
  print "3!"
  time.sleep(1)
  print "2!"
  time.sleep(1)
  print "1!"
  time.sleep(1)
  print "Sorry, no clue. Refresh the page and try again with a new number."

【问题讨论】:

    标签: python python-2.7 input


    【解决方案1】:

    当您编写or 子句时,每个参数都被评估为布尔值。所以实际上你写的内容被解释为:

    int(bale) == 63 是真的吗?还是190 是真的?还是36 是真的?等等。

    Python 正在将这些整数转换为 bool 值并评估它们是否为真。请注意,bool(n) 对所有整数 n 都为假,n = 0 除外,因此这导致if 中的条件始终为真。

    您要做的是检查int(bale) 是否等于任何整数。这可以通过将检查更改为:

    if int(bale) == 63 or int(bale) == 190 or int(bale) == 36 or...
    

    更易读、更快速的方法是使用集合:

    if int(bale) in {63, 190, 36, ...}:
    

    【讨论】:

    • 感谢您的帮助!抱歉,我带着这么简单的问题来到这里,我知道出了什么问题,只是不知道如何解决它,tysm!
    • @pikachad 不用担心,如果您可以投票/将答案标记为正确,将不胜感激!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-24
    • 1970-01-01
    • 2016-07-02
    • 2016-11-19
    • 1970-01-01
    • 2017-01-15
    相关资源
    最近更新 更多