逻辑“与”和按位&

问题描述 投票:0回答:1

我正在为一个练习问题编写一段代码,其中我尝试显示最大的奇数。我一直遇到一个问题,当我用 & 符号将两个语句链接在一起时,即使单独评估第二个语句是假的,它也是真的。当我从 & 更改为 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 正在评估表达式。另外 & 应该是一种“惰性”检查形式。

python bitwise-operators logical-operators
1个回答
0
投票

&& 是逻辑 AND 运算符。

它可以组合两个布尔表达式,如果两个表达式都为 true,则返回 true,否则返回 false。它用于逻辑运算。

& 是按位与运算符。

它对其操作数的每一位执行按位与运算。它通常用于操作整数值中的各个位。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.