写函数,将score.txt文件按总分从高到低输出学生信息到文件sorted_total.txt文件中,按姓名从小到大输出学生信息到文件sorted_name.txt文件中
时间: 2024-03-05 18:52:40 浏览: 114
对学生信息以成绩高到低排序
5星 · 资源好评率100%
好的,以下是实现代码:
```python
# 定义计算总分的函数
def calc_total(scores):
return sum(map(int, scores))
# 读取 score.txt 文件中的学生成绩信息
with open("score.txt", "r") as f:
lines = f.readlines()
# 将学生成绩信息转成字典形式
students = {}
for line in lines:
info = line.strip().split()
name = info[0]
scores = info[1:]
total = calc_total(scores)
students[name] = {'scores': scores, 'total': total}
# 按总分从高到低排序
sorted_by_total = sorted(students.items(), key=lambda x: x[1]['total'], reverse=True)
# 将排序后的学生信息写入 sorted_total.txt 文件中
with open("sorted_total.txt", "w") as f:
for item in sorted_by_total:
name = item[0]
scores = " ".join(item[1]['scores'])
total = item[1]['total']
f.write(f"{name} {scores} {total}\n")
# 按姓名从小到大排序
sorted_by_name = sorted(students.items(), key=lambda x: x[0])
# 将排序后的学生信息写入 sorted_name.txt 文件中
with open("sorted_name.txt", "w") as f:
for item in sorted_by_name:
name = item[0]
scores = " ".join(item[1]['scores'])
total = item[1]['total']
f.write(f"{name} {scores} {total}\n")
```
该程序定义了一个 `calc_total` 函数,用于计算学生总分。然后读取 score.txt 文件中的学生成绩信息,并将其转换为字典形式。使用 `sorted` 函数对学生信息进行排序,并将排序结果写入 sorted_total.txt 和 sorted_name.txt 文件中。请注意,文件名和路径可以根据需要进行修改。
阅读全文