任务要求
输入3个数a,b,c,按大小顺序在控制台打印输出。
任务分析
三个数排序的核心在于:
1.比较逻辑:需确保每个数与其他数正确比较大小。
2.变量交换:通过临时变量或直接交换实现数值位置调整。
3.代码简洁性:利用Python特性(如列表排序)简化流程。
任务实现
方法1:条件判断法
a = int(input("输入第一个数: "))
b = int(input("输入第二个数: "))
c = int(input("输入第三个数: "))
# 确保a >= b
if a < b:
a, b = b, a
# 确保a >= c
if a < c:
a, c = c, a
# 确保b >= c
if b < c:
b, c = c, b
print(f"从大到小顺序: {a}, {b}, {c}")
运行结果:从键盘上输入字符串“86”、“98”和“56”。
输入第一个数: 86
输入第二个数: 98
输入第三个数: 56
从大到小顺序: 98, 86, 56
进程已结束,退出代码为 0
说明:
- 通过三次条件判断逐步确定最大值、中间值和最小值。
- 优点:逻辑直观,无需额外数据结构。
方法2:列表排序法
nums = [
int(input("输入第一个数: ")),
int(input("输入第二个数: ")),
int(input("输入第三个数: "))
]
nums.sort(reverse=True)
print(f"从大到小顺序: {nums[0]}, {nums[1]}, {nums[2]}")
运行结果:从键盘上输入字符串“86”、“98”和“56”。
输入第一个数: 86
输入第二个数: 98
输入第三个数: 56
从大到小顺序: 98, 86, 56
进程已结束,退出代码为 0
说明:
- 将数值存入列表后使用sort(reverse=True)降序排列。
- 优点:代码简洁。
方法3:冒泡排序法
a, b, c = map(int, input("输入三个数(空格分隔): ").split())
# 冒泡排序两轮比较
for _ in range(2):
if a < b:
a, b = b, a
if b < c:
b, c = c, b
print(f"从大到小顺序: {a}, {b}, {c}")
运行结果:从键盘上输入字符串“98 23 68”。
输入三个数(空格分隔): 98 23 68
从大到小顺序: 98, 68, 23
进程已结束,退出代码为 0
说明:
- 应用冒泡排序思想,通过两轮相邻元素比较完成排序。
- 特点:可扩展至更多元素排序。
方法4:中间变量交换法
a = int(input("输入第一个数: "))
b = int(input("输入第二个数: "))
c = int(input("输入第三个数: "))
# 确定最大值赋给a
max_val = max(a, b, c)
min_val = min(a, b, c)
mid_val = (a + b + c) - max_val - min_val
print(f"从大到小顺序: {max_val}, {mid_val}, {min_val}")
运行结果:从键盘上输入字符串“86”、“98”和“56”。
输入第一个数: 86
输入第二个数: 98
输入第三个数: 56
从大到小顺序: 98, 86, 56
进程已结束,退出代码为 0
说明:
- 利用max()和min()函数快速定位极值,计算中间值。
- 优点:数学逻辑清晰,减少条件判断次数。
方法5:函数封装法
def sort_three(x, y, z):
if x < y:
x, y = y, x
if x < z:
x, z = z, x
if y < z:
y, z = z, y
return x, y, z
a = int(input("输入第一个数: "))
b = int(input("输入第二个数: "))
c = int(input("输入第三个数: "))
result = sort_three(a, b, c)
print(f"从大到小顺序: {result[0]}, {result[1]}, {result[2]}")
运行结果:从键盘上输入字符串“86”、“98”和“56”。
输入第一个数: 86
输入第二个数: 98
输入第三个数: 56
从大到小顺序: 98, 86, 56
进程已结束,退出代码为 0
说明:
- 将排序逻辑封装为函数,增强代码复用性。
- 适用场景:需多次调用排序功能的程序。