文件“成绩.txt”中存放了学生的学号,姓名,语文,数学和英语成绩。编写程序,统计每位同学的总分,并按总分由高到低进行排序后输出(总分相同的情况,排名可任意),输出包括学号,姓名和总分三项。
时间: 2023-12-04 17:01:56 浏览: 117
好的,我可以帮你编写一个Python程序来实现这个功能。请先确保程序文件与“成绩.txt”在同一目录下。
```python
with open("成绩.txt", "r") as f:
lines = f.readlines()[1:] # 跳过第一行表头
scores = []
for line in lines:
items = line.strip().split()
sid, name, chinese, math, english = items
total = int(chinese) + int(math) + int(english)
scores.append((sid, name, total))
scores_sorted = sorted(scores, key=lambda x: x[2], reverse=True)
print("排名 学号 姓名 总分")
for i, score in enumerate(scores_sorted):
rank = i + 1
sid, name, total = score
print(f"{rank:<5d}{sid:<6s}{name:<6s}{total:<6d}")
```
这个程序首先打开“成绩.txt”文件并读取其中的每一行记录(跳过第一行表头),将每行记录的学号、姓名和总分计算出来并存入一个列表 `scores` 中。然后使用 `sorted` 函数对 `scores` 列表进行排序,排序规则是按照总分从高到低排序。最后按照要求输出每位同学的排名、学号、姓名和总分。
阅读全文