用Python语言实现:14.文件score.txt保存了学生的平时成绩和期末成绩,内容如下: 学号,平时成绩,期末成绩 9999180101,77,88 9999180102,91,85 9999180103,87,96 9999180104,70,68 9999180105,86,72 编写程序读取所有成绩,计算总评成绩(四舍五入到整数),其中总评成绩=平时成绩40%+期末成绩60%。最后按总评成绩降序排列后保存至一个新的文件内,文件内容应该如下:学号,平时成绩,期末成绩,总评成绩 9999180103,87,96,92 9999180102,91,85,87 9999180101,77,88,84 9999180105,86,72,78 9999180104,70,68,69
时间: 2023-09-05 18:11:03 浏览: 166
下面是一个实现上述功能的Python代码:
```python
import csv
# 读取文件中的学生信息
def read_students(filename):
students = []
with open(filename, 'r') as f:
reader = csv.reader(f)
next(reader) # 跳过第一行
for row in reader:
student = {'id': row[0], 'pscore': int(row[1]), 'fscore': int(row[2])}
students.append(student)
return students
# 计算学生的总评成绩
def calculate_tscore(students):
for student in students:
student['tscore'] = round(student['pscore'] * 0.4 + student['fscore'] * 0.6)
# 按总评成绩降序排列
def sort_students(students):
students.sort(key=lambda x: x['tscore'], reverse=True)
# 将学生信息保存至文件
def save_students(students, filename):
with open(filename, 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['学号', '平时成绩', '期末成绩', '总评成绩'])
for student in students:
writer.writerow([student['id'], student['pscore'], student['fscore'], student['tscore']])
def main():
students = read_students('score.txt')
calculate_tscore(students)
sort_students(students)
save_students(students, 'result.txt')
if __name__ == '__main__':
main()
```
注:在读取文件时,使用了Python内置的csv模块,可以方便地处理CSV格式文件。在计算总评成绩时,使用了round函数进行四舍五入。