4.设一个文本文件marks.txt中存储了学生的姓名及成绩如下:张三96 李四 95 每行为学生姓名与成绩,编写一个程序读取这些学生的姓名与成绩并按成绩从高到低的顺序输出到另外一个文件 sorted. txt 中。
时间: 2024-11-10 15:32:02 浏览: 10
要实现这个功能,你可以使用 Python 的内置模块 `open()` 和 `csv` 来处理文本文件。首先,你需要打开原始文件,然后逐行读取数据,对每个学生的成绩进行排序,最后将结果写入新的文件。这里是一个简单的示例:
```python
import csv
# 打开原始文件(只读)
with open('marks.txt', 'r') as marks_file, open('sorted.txt', 'w', newline='') as sorted_file:
# 使用 csv.reader 读取文件,每一行是一个元组,第一列是姓名,第二列是成绩
reader = csv.reader(marks_file)
# 创建一个新的 csv.writer 对象,用于写入排序后的数据
writer = csv.writer(sorted_file)
# 按成绩排序的学生列表
students = []
# 遍历文件,将学生信息添加到列表中
for line in reader:
if len(line) == 2: # 检查是否有两列数据(姓名和成绩)
name, score = line
students.append((name, int(score))) # 将成绩转换为整数以便于比较
# 按照成绩降序排序
students.sort(key=lambda x: x[1], reverse=True)
# 写入排序后的内容
for student in students:
writer.writerow(student)
```
运行这段代码后,`sorted.txt` 文件就会包含按照成绩从高到低排列的学生名单。
阅读全文