一个表达式python中的两个数值比较

时间:2018-07-10 21:00:41

标签: python equality

我以为我读过某个地方的python(至少3.x)足够聪明,可以处理此问题:

x = 1.01

if 1 < x < 0:
    print('out of range!')

但是它对我不起作用。

我知道我可以改用它:

if ((x > 1) | (x < 0)):
    print('out of range!')

...但是可以修复上述版本吗?

3 个答案:

答案 0 :(得分:3)

效果很好,是您的表达式始终为False;试试这个吧:

x = .99

if 1 > x > 0:
    print('out of range!')

答案 1 :(得分:2)

Python链式比较的工作方式类似于数学符号。在数学中,“ 0 并且小于1,而“ 1 和小于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操作,您将获得所需的控制流。