为什么在 Python 中逻辑运算符不能与关系运算符一起使用?
Why can't logical operators be used with relational operators in Python?
我正在尝试使用逻辑运算符“&”和关系运算符 'if' 来比较两个不同的变量是否位于 Python 中的两个不同范围内。这个问题可能很愚蠢,我相信它会被否决,但即便如此,为什么这段代码不起作用?
代码
a = 2.0
b = 3.0
if 1 <= a <= 4 & 2 <= b <= 5:
print 'Yes'
if 1 <= a <= 4:
print 'Yes, a'
if 2 <= b <= 5:
print 'Yes, b'
输出
Yes, a
Yes, b
进行此类比较的最佳方法是什么?
请注意,&
是按位运算符而不是逻辑运算符。
在python中,逻辑运算符由关键字and
、or
和not
组成。你的情况:
if 1 <= a <= 4 and 2 <= b <= 5:
print 'Yes'
考虑:
>>> a = 2.0
>>> b = 3.0
>>>
>>> if 1 <= a <= 4 & 2 <= b <= 5:
... print 'Yes'
...
>>> if 1 <= a <= 4 and 2 <= b <= 5:
... print 'Yes'
...
Yes
&
是按位 operator.Use and 而不是 &.
if 1 <= a <= 4 and 2 <= b <= 5:
print 'Yes'
and
是布尔值 AND。 &
是按位与。
因为按位 AND 比 <=
运算符具有 higher precedence(即它更具约束力),所以当您不将左右布尔比较表达式包装在括号中时,它会首先被计算。
所以评价是这样的:
1 <= a <= 4 & 2 <= b <= 5
1 <= 2.0 <= (4 & 2) <= 3.0 <= 5
1 <= 2.0 <= 0 <= 3.0 <= 5
这显然是False
。你想要的是:
1 <= a <= 4 and 2 <= b <= 5
这里不需要括号,因为 and
运算符的优先级低于 <=
,因此默认情况下将首先计算左右表达式。
operator precedence table值得一看。您不需要记住它,但它有助于理解所有 Python 运算符以及它们之间的一般关系。
我正在尝试使用逻辑运算符“&”和关系运算符 'if' 来比较两个不同的变量是否位于 Python 中的两个不同范围内。这个问题可能很愚蠢,我相信它会被否决,但即便如此,为什么这段代码不起作用?
代码
a = 2.0
b = 3.0
if 1 <= a <= 4 & 2 <= b <= 5:
print 'Yes'
if 1 <= a <= 4:
print 'Yes, a'
if 2 <= b <= 5:
print 'Yes, b'
输出
Yes, a
Yes, b
进行此类比较的最佳方法是什么?
请注意,&
是按位运算符而不是逻辑运算符。
在python中,逻辑运算符由关键字and
、or
和not
组成。你的情况:
if 1 <= a <= 4 and 2 <= b <= 5:
print 'Yes'
考虑:
>>> a = 2.0
>>> b = 3.0
>>>
>>> if 1 <= a <= 4 & 2 <= b <= 5:
... print 'Yes'
...
>>> if 1 <= a <= 4 and 2 <= b <= 5:
... print 'Yes'
...
Yes
&
是按位 operator.Use and 而不是 &.
if 1 <= a <= 4 and 2 <= b <= 5:
print 'Yes'
and
是布尔值 AND。 &
是按位与。
因为按位 AND 比 <=
运算符具有 higher precedence(即它更具约束力),所以当您不将左右布尔比较表达式包装在括号中时,它会首先被计算。
所以评价是这样的:
1 <= a <= 4 & 2 <= b <= 5
1 <= 2.0 <= (4 & 2) <= 3.0 <= 5
1 <= 2.0 <= 0 <= 3.0 <= 5
这显然是False
。你想要的是:
1 <= a <= 4 and 2 <= b <= 5
这里不需要括号,因为 and
运算符的优先级低于 <=
,因此默认情况下将首先计算左右表达式。
operator precedence table值得一看。您不需要记住它,但它有助于理解所有 Python 运算符以及它们之间的一般关系。