python身高排序 , 小明今年升学到了小学一年级, 来到新班级后,发现其他小朋友身高参差不齐, 然后就想基于各小朋友和自己的身高差,对他们进行排序, 请帮他实现排序 输入描述 第一行为正整数H和N 0 < H < 200 为小明的身高 0 < N < 50 为新班级其他小朋友个数 第二行为N个正整数 H1 ~ Hn分别是其他小朋友的身高 取值范围0 < Hi < 200 且N个正整数各不相同 输出描述 输出排序结果,各正整数以空格分割 和小明身高差绝对值最小的小朋友排在前面 和小明身高差绝对值最大的小朋友排在后面 如果两个小朋友和小明身高差一样 则个子较小的小朋友排在前面
时间: 2024-03-07 08:50:22 浏览: 111
好的,我来帮你解决这个问题。以下是 Python 代码实现:
```python
h, n = map(int, input().split())
heights = list(map(int, input().split()))
# 计算各小朋友和小明的身高差,存储到列表中
diffs = [abs(h - height) for height in heights]
# 按照身高差和身高大小进行排序
sorted_heights = sorted(zip(heights, diffs), key=lambda x: (x[1], x[0]))
# 输出排序结果
for height, diff in sorted_heights:
print(height, end=' ')
print()
```
解释一下代码:
首先读入小明的身高和其他小朋友的身高,存储到变量 `h` 和 `heights` 中。接着计算各小朋友和小明的身高差,存储到列表 `diffs` 中。然后使用 `zip` 函数将 `heights` 和 `diffs` 合并成一个列表,并按照身高差和身高大小进行排序。最后输出排序结果即可。
注意,Python 3 中的 `print` 函数默认会在输出末尾加上一个换行符,因此需要通过 `end` 参数指定输出末尾不加换行符。
阅读全文