【问题标题】:Understanding some more complex boolean logic理解一些更复杂的布尔逻辑
【发布时间】:2020-05-12 15:30:04
【问题描述】:

有人可以逐步解释为什么 True 或 False 和 False 解析为 True 吗?

我了解 True or not False 解析为 True or True and false, 但是为什么 True 或 True 和 False 会解析为 True 或 False?

【问题讨论】:

  • 你能放一些括号吗?
  • 有括号吗?如果首先评估 NOT false AND false,则结果为 true OR false,结果为 true
  • 如果不涉及括号,可能你使用的语言对 AND 的优先级更高,导致它在 OR 之前被评估
  • docs.python.org/3/reference/…,所以它是True or ((not False) and False),而True or (anything) 将是True

标签: python logic logical-operators


【解决方案1】:

这个表达式:

True or not False and False

对应于以下全括号表达式:

(True or ((not False) and False))

计算如下:

(True or (True and False))
(True or False)
True

括号之所以如此,是因为布尔逻辑中的优先级是这样的:

not  (like negation)
and  (like multiplication)
or   (like addition)

我希望这在任何主流编程语言中的评估方式基本相同。

【讨论】:

    猜你喜欢
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多