如何高效编写接收四个整数并输出非降序排列的Python程序
高效实现四整数非降序排列的Python程序
需求说明
接收四行输入的四个整数,将其按非降序排列后输出为一行,整数间用单个空格分隔,且第四个整数后无空格。
原代码的问题
你提供的原代码通过多层嵌套if判断实现排序,存在以下问题:
- 逻辑冗余复杂,代码可读性差,维护成本高;
- 容易出现语法错误(例如代码中
print(d,a.b,c)的.应为逗号); - 扩展性极差,若需处理更多元素,代码量会呈指数级增长。
高效实现方案
Python内置的排序算法(Timsort)经过高度优化,对于小规模数据(如4个整数)效率极高,同时代码简洁易维护,是最优选择:
# 读取四行输入,转换为整数列表 numbers = [int(input()) for _ in range(4)] # 执行非降序排序(默认就是非降序) numbers.sort() # 格式化为要求的输出格式:空格分隔,末尾无空格 print(' '.join(map(str, numbers)))
代码解释
- 输入收集:用列表推导式一次性读取四行输入并转为整数,比单独赋值更简洁;
- 排序:
sort()方法直接对列表原地排序,时间复杂度为O(n log n),对于4个元素来说几乎是瞬时完成; - 输出格式化:用
' '.join()将排序后的整数转为字符串并拼接,完美满足“单个空格分隔、末尾无空格”的要求。
手动排序实现(学习用)
如果出于学习目的需要手动实现排序逻辑,也可以用更简洁的方式避免多层嵌套:
a = int(input()) b = int(input()) c = int(input()) d = int(input()) # 手动找出最小值与最大值 min_val = min(a, b, c, d) max_val = max(a, b, c, d) # 提取中间两个数并排序 remaining = [x for x in [a, b, c, d] if x != min_val and x != max_val] mid1, mid2 = sorted(remaining) print(min_val, mid1, mid2, max_val)
内容的提问来源于stack exchange,提问作者Akash Sharma
相关产品推荐
相关产品推荐

