我正在为一个练习问题编写一段代码,其中我尝试显示最大的奇数。我一直遇到一个问题,当我用 & 符号将两个语句链接在一起时,即使单独评估第二个语句是假的,它也是真的。当我从 & 更改为 and 相反,它开始正确评估。我写的代码如下。
x = 21
y = 57
z = 7
a = x
if x > y:
a = y
if y > z:
a = z
elif x > z:
a = z
if x%2 != 0:
a = x
if y%2 != 0 & (y > a):
a = y
if z%2 != 0 & (z > a):
a = z
print(z%2 != 0 & (z > a))
print(z%2 != 0 and (z > a))
print(a)
输出是
True
False
7
为什么 & 和“and”得到不同的输出。它们不是一样吗?
我读到 & 正在检查相关值的实际位,同时 and 正在评估表达式。另外 & 应该是一种“惰性”检查形式。
&& 是逻辑 AND 运算符。
它可以组合两个布尔表达式,如果两个表达式都为 true,则返回 true,否则返回 false。它用于逻辑运算。
& 是按位与运算符。
它对其操作数的每一位执行按位与运算。它通常用于操作整数值中的各个位。