输入一组学生的成绩,按照成绩降序输出成绩表。如有相同成绩,较小的学号排位靠前
时间: 2024-03-08 20:45:45 浏览: 134
好的,这是一个简单的排序问题,可以使用 Python 的内置排序函数 `sorted`。下面是实现排序的函数及完整代码:
```python
def sort_scores(scores):
# 按成绩降序排列,成绩相同按学号升序排列
return sorted(scores, key=lambda x: (-x[1], x[0]))
# 主程序
if __name__ == '__main__':
scores = []
while True:
try:
n, s = map(int, input().split())
scores.append((n, s))
except:
break
sorted_scores = sort_scores(scores)
for n, s in sorted_scores:
print('{:<10}{:>3}'.format(n, s))
```
这个程序中,`sort_scores` 函数接受一个成绩列表 `scores`,并返回按照要求排序后的列表。排序使用了 Python 内置的 `sorted` 函数,其中 `key` 参数指定排序的规则。这里使用了一个 lambda 表达式,对于每个元素 `x`,它返回一个元组,包含成绩的相反数(即降序排列)和学号。这样可以实现按成绩降序排列,成绩相同时按学号升序排列的要求。
在主程序中,我们读取输入,将每个学生的学号和成绩存入 `scores` 列表中。然后调用 `sort_scores` 函数对其进行排序,并将结果输出。输出时,学号使用左对齐、宽度为 10,成绩使用右对齐、宽度为 3 的格式输出。
阅读全文