文件 test6.txt 中保存了 5 个学生的课程成绩。(英文姓名) 学号,姓名,语文,数学,外语 2001,Tom,99,88,76 2002,John,108,84,84 2003,Mark,111,56,120 2004,Mary,93,52,80 2005,Alice,62,89,74 编写一个程序,从文件读取成绩,计算总分,按总分从高到低的顺序输出(各字段对齐),示例运行结果如 下:
时间: 2023-09-23 15:09:27 浏览: 59
好的,以下是代码实现:
```python
def read_file(filename):
students = []
with open(filename, 'r') as f:
lines = f.readlines()
for line in lines[1:]:
data = line.strip().split(',')
student = {'id': data[0], 'name': data[1], 'chinese': int(data[2]), 'math': int(data[3]), 'english': int(data[4])}
students.append(student)
return students
def calculate_total_score(students):
for student in students:
total_score = student['chinese'] + student['math'] + student['english']
student['total_score'] = total_score
return students
def sort_by_total_score(students):
students = sorted(students, key=lambda x: x['total_score'], reverse=True)
return students
def output_result(students):
print('{:<10}{:<10}{:<10}{:<10}{:<10}{:<10}'.format('学号', '姓名', '语文', '数学', '外语', '总分'))
for student in students:
print('{:<10}{:<10}{:<10}{:<10}{:<10}{:<10}'.format(student['id'], student['name'], student['chinese'], student['math'], student['english'], student['total_score']))
if __name__ == '__main__':
filename = 'test6.txt'
students = read_file(filename)
students = calculate_total_score(students)
students = sort_by_total_score(students)
output_result(students)
```
运行结果如下所示:
```
学号 姓名 语文 数学 外语 总分
2003 Mark 111 56 120 287
2002 John 108 84 84 276
2001 Tom 99 88 76 263
2004 Mary 93 52 80 225
2005 Alice 62 89 74 225
```