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

Python中不使用sort函数如何实现多参数(三个数字)排序

三数排序问题修复方案

问题原因

  • 你写的simple_sort函数仅返回单个整数,调用时尝试解包为3个变量赋值,会直接触发类型错误
  • 现有判断逻辑覆盖不全,仅能返回单个符合条件的数值,完全没有完成三数排序的完整逻辑,也没有处理数值相等的边界场景
  • 注意你的需求描述和代码注释存在冲突:你要求a为最大值、b为中间值、c为最小值时,直接打印a,b,c为降序;但注释要求输出升序,以下实现会先满足注释要求的打印a,b,c为升序,如果需要a为最大值,调整返回顺序即可。

修复代码

简洁实现(调用内置排序)

num1 = int(input("input an integer: "))
num2 = int(input("input another integer: "))
num3 = int(input("input another integer: "))

def simple_sort(a,b,c):
    # sorted默认升序,返回[最小值, 中间值, 最大值],对应a、b、c升序要求
    return sorted([a,b,c])

a,b,c=simple_sort(num1,num2,num3)
print(a,b,c)

如果需要满足「a为最大值、b为中间值、c为最小值」的要求,将函数返回行修改为return sorted([a,b,c], reverse=True)即可。

纯条件判断实现(不依赖内置排序)

如果要求必须用自定义判断逻辑实现排序,可以使用以下版本:

def simple_sort(a,b,c):
    # 先确定最小值
    if a <= b and a <= c:
        min_v = a
        mid_v, max_v = (b, c) if b <= c else (c, b)
    elif b <= a and b <= c:
        min_v = b
        mid_v, max_v = (a, c) if a <= c else (c, a)
    else:
        min_v = c
        mid_v, max_v = (a, b) if a <= b else (b, a)
    # 升序返回return min_v, mid_v, max_v;降序(a最大)返回return max_v, mid_v, min_v
    return min_v, mid_v, max_v

内容的提问来源于stack exchange,提问作者altalio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:45:04