【问题标题】:Wrong logic in while loop? (Python)while循环中的逻辑错误? (Python)
【发布时间】:2021-10-13 03:00:01
【问题描述】:

从逻辑上讲,这是有道理的,但不起作用。

dice = 0
while True:
    dice = int(input("enter dice: "))
    if (dice != 4 or dice != 6 or dice != 8 or dice != 10 or dice != 12 or dice != 20):
        print("invalid")
    elif (dice == 4 or dice == 6 or dice == 8 or dice == 10 or dice == 12 or dice == 20):
        print("valid")
        break
    
print("Accepted dice")
   

我不断收到无效的打印语句。希望将其作为一个循环,直到选择正确的模具之一。

【问题讨论】:

  • 您的第一个if 中的逻辑有缺陷,它总是会评估为真。以dice != 4 or dice != 6 为例,它永远不会为假,只有dice == 4 时,第一部分才会为假,但这使得第二部分为真

标签: python logic


【解决方案1】:

使用一个标志,如评论中所述,如果您的原始版本有缺陷...如果您只是想修复它,那么您可以将您的 or 更改为 and

dice_is_valid = dice in {4,6,8,10,20}
if dice_is_valid:
  ...
else:
  print("invalid")

【讨论】:

    【解决方案2】:

    问题在于在这里使用or 语句。以4 的输入为例。 4 != 4 如果显然是错误的,那么它会评估 4 != 6 这是真的。因此,无论您输入什么,第一个条件都将始终为真。而是像这样使用else 语句

    dice = 0
    while True:
        dice = int(input("enter dice: "))
            print("invalid")
        if (dice == 4 or dice == 6 or dice == 8 or dice == 10 or dice == 12 or dice == 20):
            print("valid")
            break
        else:
            print("invalid")
        
    print("Accepted dice")
    

    【讨论】:

      【解决方案3】:
      dice_var = 0
      a = [4,6,8,10,12,20]
      while True:
          dice_var = int(input("Enter the dice value ;"))
          if dice_var in a:
              print("Valid Value !!!!")
              break
          else:
              print("Invalid Value !!!!")
      print("Accepted Dice")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-17
        • 2015-09-08
        相关资源
        最近更新 更多