python中的Or语句问题

2024-04-19 18:15:40 发布

您现在位置:Python中文网/ 问答频道 /正文

python中的Or语句似乎不像在其他语言中那样工作,因为:

-1 < 0 | 0<0

返回False(应该返回true,因为-1<0True

有什么问题吗?在


Tags: or语言falsetrue语句
2条回答

有两个问题:第一,运算符的优先级不是您所期望的。始终可以添加parens使其明确:

>>> (-1 < 0) | (0 < 0)
True

另外,single pipe是一个逻辑or,它始终对两个参数求值。其他语言的管道管道是or

^{pr2}$

|优先于<(请参见Python operator precedence table)。使用括号强制执行所需的操作顺序:

>>> -1 < 0 | 0 < 0
False
>>> -1 < (0 | 0) < 0
False
>>> (-1 < 0) | (0 < 0)
True

您可能更喜欢使用boolean ^{}运算符(在许多其他语言中相当于||),而不是使用bitwise ^{},这将为您提供所需的无括号优先级:

^{pr2}$

附带说明一下,-1 < 0 < 0(或a < b < c)在Python中执行intuitive thing。它相当于a < b and b < c。大多数其他语言将其计算为(a < b) < c,这通常不是您所期望的。在

相关问题 更多 >