用Python.编写程序实现以下各项功能: 1)从已提供的数据文件data.csv文件中,读入所存有的学生成绩信息,按学号从大到小排序,再将结果存入新datalD.csv文件; 2)从已提供的数据文件data.csv文件中读入所有信息,分别计算英语、数 学课程的最高分、最低分和平均分(保留两位小数),将这些信息保存到新数据文件 dataScore.csv;统计出的结果显示在原数据的底部从已提供的数据文件data.csv文件中读入所有信息,统计英语、数学两 门课的总分,将这些信息保存到新数据文件dataSum.csv;统计出的结 果显示在每个学生成绩的右侧从已提供的数据文件data.csv文件中读入所有信息,统计英语、数学两 门课的总分,将这些信息保存到新数据文件dataSum.csv;统计出的结 果显示在每个学生成绩的右侧
时间: 2024-01-24 12:17:17 浏览: 27
以下是Python代码实现上述功能:
```python
import csv
# 读取原始数据文件
with open('data.csv', 'r') as f:
reader = csv.reader(f)
data = [row for row in reader]
# 按学号从大到小排序并写入新文件
data.sort(reverse=True, key=lambda x: x[0])
with open('datalD.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerows(data)
# 计算英语、数学课程的最高分、最低分和平均分并写入新文件
header = ['科目', '最高分', '最低分', '平均分']
eng_scores = [float(row[1]) for row in data[1:]]
math_scores = [float(row[2]) for row in data[1:]]
eng_max, eng_min, eng_avg = max(eng_scores), min(eng_scores), sum(eng_scores) / len(eng_scores)
math_max, math_min, math_avg = max(math_scores), min(math_scores), sum(math_scores) / len(math_scores)
score_data = [['英语', eng_max, eng_min, round(eng_avg, 2)],
['数学', math_max, math_min, round(math_avg, 2)]]
with open('dataScore.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(header)
writer.writerows(score_data)
# 计算英语、数学两门课的总分并写入新文件
header = ['学号', '姓名', '英语', '数学', '总分']
for i in range(1, len(data)):
row = data[i]
eng_score, math_score = float(row[1]), float(row[2])
total_score = eng_score + math_score
row.append(total_score)
data_sum = data[:]
data_sum[0].append('总分')
for i in range(1, len(data_sum)):
data_sum[i].append(data[i][3])
with open('dataSum.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(header)
writer.writerows(data_sum)
```
以上代码中,首先使用csv模块读取原始数据文件,然后按学号从大到小排序并写入新文件datalD.csv。接着,计算英语、数学课程的最高分、最低分和平均分,并将结果保存到新数据文件dataScore.csv中。最后,计算英语、数学两门课的总分并写入新文件dataSum.csv,同时在每个学生成绩的右侧显示总分。注意,由于CSV文件是纯文本文件,因此在写入文件时需要使用newline=''参数以避免出现多余的空行。