Python代码条件判断结果异常疑问:为何输出2 2?
问题解析:为什么条件看似不成立却输出了结果?
你的代码之所以会输出2 2,核心问题是误用了运算符,加上Python的运算符优先级和链式比较特性,导致条件意外判定为真。
关键原因拆解
- 运算符误用:你想用逻辑与判断两个条件同时成立,但写成了按位与
&。&是用于整数二进制位运算的运算符,优先级比比较运算符==更高。 - 实际计算顺序:
原条件x % 2 == 1 & y % 2 == 0的计算步骤是:- 先计算
y % 2,得到0; - 再计算
1 & 0(按位与运算,二进制01 & 00 = 00),结果为0; - 此时表达式变为
x % 2 == 0 == 0;
- 先计算
- 链式比较特性:Python支持链式比较,
a == b == c等价于(a == b) and (b == c)。这里x%2是0,所以0 == 0为True,0 == 0也为True,最终整个条件判定为True,执行print语句。
正确写法
如果要实现“x是奇数且y是偶数”的判断,应该用逻辑与运算符and:
x = 2 y = 2 if x % 2 == 1 and y % 2 == 0: print(x, y)
此时x%2 ==1为False,整个条件为False,不会输出任何内容。
内容的提问来源于stack exchange,提问作者newnewbiiii
相关产品推荐
相关产品推荐

