【问题标题】:The else function does not appear even if the "if" conditions are not met [closed]即使不满足“if”条件,else函数也不会出现[关闭]
【发布时间】:2020-08-14 02:17:17
【问题描述】:

问题是当兄弟说“不”时,即使我使用“else”或“elif”,条件“if”总是出现,为什么?难道不是假设如果输入不是“是”或“是”,还会出现什么?请帮忙

好的,这是我的代码:

# asking the bro
are_you_happy = input("You feel bad bro? ")

# psicological support loop haha
while are_you_happy.upper() == "YES" or "YEAH":
  print("*give him a hug*")
  better = input("you feel better bro? ")

  # he feel better boys :)
  if better.upper() == "YES" or "YEAH":
    print("i'm happy for you")
    break

  # he don't feel better :(
  elif better.upper() == "NO":
    more_support = input("do you want another hug? ")
    if more_support.upper() == "YES" or "YEAH":
        print("*give him a very huge hug")
        print("i hope you well bro")
        break

enter image description here

【问题讨论】:

  • are_you_happy.upper() in ["YES", "YEAH"]:。问题是or "YEAH" 总是正确的。

标签: python python-3.x loops if-statement


【解决方案1】:

在 Python 中,表达式:

something == "YES" or "YEAH"

相当于:

(something == "YES") or ("YEAH")

而且,由于"YEAH" 是一个真实的值,这将始终为真。在这种情况下,使用or正确方法是:

something == "YES" or something == "YEAH"

但你最好使用更多的 Pyhtonic:

something in ["YES", "YEAH"]

确保更改代码中的所有三个问题行。

【讨论】:

    【解决方案2】:

    当您使用 or 声明两个可能的条件时,都应与条件进行比较,因此,在您的示例中,您使用的是 are_you_happy.upper() == "YES" or "YEAH",并且您的程序正在检查 are_you_happy 是否等于 YES,这将返回 false 并且将您带到 else 部分,但是,在 or 之后,您有一个没有与任何东西进行比较的 YEAH,所以就好像您有 if "YEAH": 它将始终返回 true,因此,elif 和 else 永远不会运行。将or case修改为:if are_you_happy.upper() in ["YES","YEAH"]:等。

    【讨论】:

    • 如果您在 REPL 中输入 "YES" or "YEAH",您将返回 YES。您需要使用... in ['YES", "YEAH"]
    • 我的错,我也是新手。已编辑,谢谢。
    【解决方案3】:

    你提到“是的”总是正确的

    而 are_you_happy.upper() != "YES" 或 "YEAH":

    将 == 更改为 != 如上所述

    【讨论】:

      猜你喜欢
      • 2021-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-14
      • 2017-02-07
      • 1970-01-01
      相关资源
      最近更新 更多