【问题标题】:Can someone explain why print("red" == "blue" or 3 >= 3) returns True [duplicate]有人可以解释为什么 print("red" == "blue" or 3 >= 3) 返回 True [重复]
【发布时间】:2020-10-16 15:22:45
【问题描述】:

我想不通。

>>>print("red" == "blue")
False

>>>print("red" == 3 >= 3)
False 

那么为什么以下是正确的?

>>> print("red" == "blue" or 3 >= 3)
True

有人把我的大脑从痛苦中解救出来

【问题讨论】:

  • 当您使用布尔值or 时,只需其中一个条件为真,它就会返回真。 3>=3 为真,所以整个表达式为真。查看Boolean algebra 了解更多信息。
  • 当您将第一个 sn-p 与第二个进行比较时,它看起来像一个骗子。它们与受骗者抓人的方式不太匹配。
  • 没关系,我通读了接受的答案,如果你仔细看,你可以看到逻辑or的解释。
  • print("red" == 3 >= 3) 但这不是您完整表达的任何部分。它是"red" == "blue" or 3 >= 3,它被评估为("red" == "blue") or (3 >= 3),然后是False or True
  • "red" == 3 >= 3 等价于"red" == 3 and 3 >= 3,这就是你得到False 的原因。

标签: python logical-operators


【解决方案1】:

当您使用布尔运算符时,只有声明的条件之一必须为真才能返回真。 3>=3 为真,所以整个表达式为真

【讨论】:

    【解决方案2】:

    那是因为你使用了or

    在这种特定情况下,3 >= 3 返回 True,由于它只需要一个 True 参数,因此它返回 True,忽略其他条件。

    【讨论】:

      【解决方案3】:

      print("red" == "blue") #False 原因很明显,因为字符串 red 不等于字符串 blue。

      print("red" == 3 >= 3)这是假的,因为红色不等于3

      print("red" == "blue" or 3 >= 3) 这是真的,因为 3 == 3

      【讨论】:

        【解决方案4】:
        print("red" == "blue" or 3 >= 3)
        

        分析:

        "red" == "blue" #--> False
        
        3 >= 3 #-->True
        

        假设存在 OR 运算符:

        "red" == "blue" or 3 >= 3 #--> False OR True --> True
        

        【讨论】:

        • Python 是否允许您使用这些引号?我的(Win10 上的 3.7.7)抱怨说“标识符中的字符无效”
        • @PranavHosangadi 不,它没有。之所以出现“智能引号”,可能是因为作者使用的是 IE 或 Edge。
        猜你喜欢
        • 2022-01-22
        • 2020-03-02
        • 2021-10-19
        • 2019-01-09
        • 1970-01-01
        • 2011-05-04
        • 2021-05-26
        • 2021-09-02
        • 1970-01-01
        相关资源
        最近更新 更多