【问题标题】:Python expression evaluation ("or") [duplicate]Python表达式评估(“或”)[重复]
【发布时间】:2015-01-13 08:10:48
【问题描述】:

我想知道 Python 如何计算整数或表达式。网上的研究并没有得到满意的答案。

问题 1

5<5 or 10 

上面的结果是10,我不明白为什么。

问题 2

如何:

False or 10 返回 10?

还有:

如何:

True or 10 返回真?

问题 3

怎么做:

5 or 10 返回 5?

编辑:

改写的问题:

Why does Python return Boolean (True/False) when true and the Value (5 or 10) when false? I understand that it is a language, but is there a reason why it was mad so?

【问题讨论】:

  • 似乎or的返回是第一个非False参数(或者False如果两个参数都是False
  • 你是什么意思如何?你的意思是它是如何实现的(在这种情况下,在哪个发行版中?CPython?)还是你真正的意思是为什么(在这种情况下:而不是什么?)
  • 是的,Dmitry 解释正确。本质上,您只需要了解“或”运算符只关心对象是否评估为True,并将返回第一个,或者只是最后一个。在您的 True or 105 or 10 示例中,True5 均评估为 True(例如,False0 在这种情况下将是相反的,因为两者都将评估为 False )。另外:or 运算符按照参数设置的顺序评估参数,但如果前面的参数失败;仅当第一个不是 True 时才评估第二个,依此类推。
  • 这个副本更好:Boolean Python Value confusion

标签: python boolean expression evaluation


【解决方案1】:

or 如果为 True,则返回第一个参数,否则返回第二个参数。在 Python 中,0 和空的可迭代对象(如字符串和列表)为 False,其他一切均为 True。所以5&lt;5 or 10 的计算结果为False or 10,所以由于第一个参数为假,它返回第二个。在其他示例中,第一个参数为 True,因此返回。

【讨论】:

  • 我认为你是对的,但解释并不像应有的那么清楚(至少在我看来)。
  • 能否请您检查一下改写后的问题?
  • 对不起,你改写的问题没有意义,因为 Python 不这样做。正如我所说,它返回 first 值,不管它是什么,如果它是真的,否则返回第二个值,不管它是什么。
  • 当我们执行0或False时,输出为False。但是当我们执行 False 或 0 时,输出为 0。这就是我在改写问题中的意思。
  • @WhiteFlameAB 请查看链接为重复的问题。那里有详细解释。
猜你喜欢
  • 1970-01-01
  • 2020-07-08
  • 1970-01-01
  • 2017-11-26
  • 2010-10-22
  • 2015-06-26
  • 2016-05-04
  • 1970-01-01
  • 2019-03-12
相关资源
最近更新 更多