【问题标题】:If/else Python 3: Else statement not working [duplicate]If/else Python 3:Else语句不起作用[重复]
【发布时间】:2020-04-29 05:55:58
【问题描述】:

目前正在处理我的第一个程序,而我的 Else 语句在以下代码中不起作用:

info = input("<Y/N>")

if (info == "Y" or "y"):
   print("Calculating...")

else:
   raise SystemExit

程序只是继续

print("正在计算...")

即使输入不是 "Y""y"

【问题讨论】:

  • 因为"y" 总是True

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


【解决方案1】:
if (info == "Y" or "y"):

相当于说

if ((info == "Y") or ("y"))

由于y 不是零、null 或等效值,它的计算结果为真。 以下任一项都可以:

if (info == "Y" or info == "y")
if (info in ("y", "Y"))
if (info.lower() == "y")

【讨论】:

    【解决方案2】:

    你应该这样写:

    info = input("<Y/N>")
    
    if (info == "Y" or info == "y"):
       print ("Calculating...")
    
    else:
       raise SystemExit
    

    在你的声明中:

    info == "Y" or info == "y"
    

    "y" 始终是True

    【讨论】:

      【解决方案3】:

      发生的情况是or 运算符将左侧和右侧视为布尔(真假)语句。它在左侧看到的是info == "Y",这可能是真或假,具体取决于输入。在右侧,它看到"y" 并检查"y" 是否为真。在 python 中,当评估为布尔值时,非空字符串计为真。要解决此问题,有两种检查方法。

      1. if info == "Y" or info == "y":
      2. if info in ["y", "Y"]:

      【讨论】:

        【解决方案4】:

        让我把这个添加到上面的答案中:一种更 Pythonic 的检查方式

        if (info == 'Y' or info == 'y')

        完成

        if info.lower() == 'y'.

        当然,info 必须是字符串。

        【讨论】:

          猜你喜欢
          • 2022-11-15
          • 1970-01-01
          • 2023-03-13
          • 2015-05-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-16
          相关资源
          最近更新 更多