使用if-else排序三个整数时出现错误的技术咨询
问题分析与解决
你代码的核心问题是误用了按位与运算符&,应该用逻辑与运算符and,这直接导致条件判断失效,触发错误分支。
在Python中,&是对数值二进制位进行运算的按位操作符,而判断多个条件同时成立需要用逻辑与and。当你输入10 2 5时,a=10、b=2、c=5,第一个条件a > b & a > c会被Python解析为a > (b & a) > c:先计算b&a得到2,再判断10>2>5,结果为False;后续elif分支也因同样的&问题不成立,最终走到else输出错误信息。
修正后的代码
# take three integers and sort with if-else a, b, c = map(int, input("insert 3 integers : ").split()) print("assign check : ", a, b, c) if a > b and a > c: print(f"{c, b, a}" if c < b else f"{b, c, a}") elif b > a and b > c: print(f"{a, c, b}" if a < c else f"{c, a, b}") elif c > a and c > b: print(f"{a, b, c}" if a < b else f"{b, a, c}") else: # 处理存在相等数值的场景 if a == b == c: print(f"{a, b, c}") elif a == b: print(f"{c, a, b}" if c < a else f"{a, b, c}") elif a == c: print(f"{b, a, c}" if b < a else f"{a, b, c}") elif b == c: print(f"{a, b, c}" if a < b else f"{b, c, a}")
补充说明
原代码的else分支仅输出错误信息,但实际存在多值相等的输入场景(比如5 5 3),修正后的代码补充了这类场景的处理逻辑,确保所有合法输入都能得到正确排序结果。
内容的提问来源于stack exchange,提问作者pedro1798
相关产品推荐
相关产品推荐

