Python使用if else条件判断查找最大值运行结果不符求助
错误原因
你代码中错误使用了按位与运算符&代替了逻辑判断的“且”逻辑,&会对两个整数的二进制位做按位与运算,不会得到你想要的“同时大于两个数”的判断效果。
你写的两个判断实际执行逻辑如下:
- 第一个判断
if a>(b&c):先计算b&c,22(二进制10110)和23(二进制10111)按位与的结果是22,因此实际判断21>22,条件不成立,进入下一分支 - 第二个判断
elif b>(c&a):先计算c&a,23(二进制10111)和21(二进制10101)按位与的结果是21,因此实际判断22>21,条件成立,直接输出b,就是你得到错误结果的原因。
修正方案
如果要通过if else实现判断逻辑,需要用and连接两个独立的比较表达式:
a = 21 b = 22 c = 23 if a > b and a > c: print(a) elif b > a and b > c: print(b) else: print(c)
如果不需要自己实现判断逻辑,直接调用Python内置的max()函数即可直接得到多个数值的最大值:
print(max(a, b, c))
内容的提问来源于stack exchange,提问作者Tagore
相关产品推荐
相关产品推荐

