14.文件score.txt保存了学生的平时成绩和期末成绩,内容如下:\n学号,平时成绩,期末成绩\n9999180101,77,88\n9999180102,91,85\n9999180103,87,96\n9999180104,70,68\n9999180105,86,72\n编写程序读取所有成绩,计算总评成绩(四舍五入到整数),其中总评成绩=平时成绩40%+期末成绩60%。最后按总评成绩降序排列后保存至一个新的文件内,文件内容应该如下:
时间: 2024-02-15 10:05:06 浏览: 881
学号 总评成绩
9999180103 91
9999180102 89
9999180105 78
9999180101 76
9999180104 69
以下是Python代码实现:
```python
import csv
# 读取文件
with open('score.txt', 'r') as f:
reader = csv.reader(f)
next(reader) # 跳过第一行标题
scores = []
for row in reader:
stu_id = row[0]
usual_score = int(row[1])
final_score = int(row[2])
total_score = round(usual_score * 0.4 + final_score * 0.6) # 计算总评成绩并四舍五入到整数
scores.append((stu_id, total_score))
# 按总评成绩降序排列
scores_sorted = sorted(scores, key=lambda x: x[1], reverse=True)
# 保存至新文件
with open('total_score.txt', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['学号', '总评成绩'])
for row in scores_sorted:
writer.writerow([row[0], row[1]])
```
注意事项:
- 使用Python的csv模块来读取和保存文件,这样可以方便地处理逗号分隔的数据。
- 在读取文件时,使用next()函数跳过第一行标题。
- 在计算总评成绩时,使用round()函数将小数四舍五入到整数。
- 在保存结果到新文件时,使用newline=''参数来避免生成空行。
阅读全文