You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 09:55:23