【问题标题】:Logical AND operation in python [duplicate]python中的逻辑与运算[重复]
【发布时间】:2019-10-24 07:12:03
【问题描述】:

这个表达式在 Python 中是如何工作的?

x=1, y=2, z=3 
print(x and y and z)

结果是 3

如果

x=3, y=2, z=1
print(x and y and z)

结果是 1

谁能解释一下?

【问题讨论】:

  • 对我来说是 3 而不是 1
  • 你要么去z and y and x要么x=1; y=2; z=3
  • 你可以找到答案here
  • 表达式 x 和 y 首先计算 x;如果 x 为假,则返回其值;否则,计算 y 并返回结果值。
  • 1 and 2 = 2 then 2 and 3 = 3, 3 and 2 = 2 then 2 and 1 = 1

标签: python python-3.x logical-operators


【解决方案1】:

在逻辑测试中,返回值是最后评估的值。 所以,在第一个测试 ==> print(1 and 2 and 3),我们得到的答案是3,因为它是测试的最后一个真值。 在第二个测试中 ==> print(3 and 2 and 1),同样的答案是1

【讨论】:

    【解决方案2】:

    or python 中的运算符返回第一个参数,它被认为是 true,如果不是,那么它将返回第二个。这两个值都不会转换为布尔值。 and 运算符将返回第一个参数,如果它被认为是假的,否则第二个。再次没有转化。

    所以a or ba 如果bool(a) == True 否则它是b 如果bool(a) == Falsea and ba,否则为b

    编辑: 编辑了我的错误 - 我切换了 andor

    【讨论】:

    • 你所说的似乎与正在发生的事情相反。 OPs 术语都评估为 True,但最终值是结果,而不是第一个。
    • 谢谢,我忘了他问的是and,not or。
    猜你喜欢
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 2019-09-06
    • 1970-01-01
    • 2019-04-21
    • 2011-03-14
    • 2020-10-02
    相关资源
    最近更新 更多