python代码:在E盘存放学生课程成绩的文件“8.2score.csv”,存有6名同学各四门成绩。请读取并显示里面文本内容,计算每名同学的总分附加到课程成绩后面,根据每名同学的总分进行降序排序,并将排序后的结果写入到新文件“8.2是从reSort.csv”中。
时间: 2023-07-16 18:15:08 浏览: 88
下面是这个问题的Python代码实现:
```python
import csv
# 打开原始成绩文件
with open('E:/8.2score.csv', 'r', encoding='utf-8-sig') as f:
reader = csv.reader(f)
scores = [row for row in reader]
# 计算每名同学的总分,附加到课程成绩后面
for i in range(1, len(scores)):
total_score = sum([float(x) for x in scores[i][1:]])
scores[i].append(str(total_score))
# 根据每名同学的总分进行降序排序
scores = sorted(scores[1:], key=lambda x: float(x[-1]), reverse=True)
# 写入新文件
with open('E:/8.2reSort.csv', 'w', newline='', encoding='utf-8-sig') as f:
writer = csv.writer(f)
writer.writerow(['姓名', '语文', '数学', '英语', '物理', '总分'])
writer.writerows(scores)
```
在这段代码中,我们首先用 `csv` 模块读取了原始成绩文件,并将其存入二维列表 `scores` 中。然后,我们利用循环计算每名同学的总分,并将总分附加到该同学的成绩列表中。接着,我们使用 `sorted` 函数对 `scores` 列表进行降序排序,排序的依据是每名同学的总分。最后,我们将排序后的结果写入到新文件中。
需要注意的是,我们在写入新文件时,需要首先写入表头,即 `'姓名', '语文', '数学', '英语', '物理', '总分'`。这里我们使用了 `newline=''` 参数来指定写入文件时不添加额外的空行。同时,由于原始成绩文件中第一行是表头,我们在读取时需要跳过该行,因此在 `scores` 列表中,我们只保留了从第二行开始的数据。
阅读全文