我以为我读过某个地方的python(至少3.x)足够聪明,可以处理此问题:
x = 1.01
if 1 < x < 0:
print('out of range!')
但是它对我不起作用。
我知道我可以改用它:
if ((x > 1) | (x < 0)):
print('out of range!')
...但是可以修复上述版本吗?
答案 0 :(得分:3)
效果很好,是您的表达式始终为False;试试这个吧:
x = .99
if 1 > x > 0:
print('out of range!')
答案 1 :(得分:2)
Python链式比较的工作方式类似于数学符号。在数学中,“ 0
并且。不是或。这两个条件都必须满足。
如果您想要一个“或”,您可以自己写一个。它是Python中的or
,而不是|
; |
是按位或。
if x > 1 or x < 0:
whatever()
或者,您也可以使用“和”来表达表达式:
if not (0 <= x <= 1):
whatever()
答案 2 :(得分:1)
您已经可以在一个 compound 表达式中进行操作了,正如您已经注意到的,其他人已经发表了评论。尝试使用1 < x < 0
时,不能在带有隐含连词(和/或)的表达式中执行此操作。您的表达式需要一个or
连词,但在这种情况下,Python的隐含操作是and
。
因此,要获得所需的内容,您必须撤销条件分支并应用德摩根定律:
if not(0 <= x <= 1):
print('out of range!')
现在,您已经隐含了and
操作,您将获得所需的控制流。