文件test7-6.txt中保存了5个学生的课程成绩。 学号,姓名,语文,数学,外语 2001,陈晓群,99,88,76 2002,刘伟,108,84,84 2003,杨明翰,111,52,120 2004,王锋,93,52,80 2005,雷蓉生,69,89,74 编写一个程序,从文件读取成绩,计算总分,按总分从高到低的顺序输出(各字段对齐),运行结果如下: 名次 学号 姓名 语文 数学 外语 总分 1 2003杨明翰 111 52 120 287 2 2002刘伟 108 84 84 276 3 2001陈晓群 99 88 76 263 4 2004王锋 93 52 80 225 5 2005雷蓉生 69 89 74 225python
时间: 2023-10-09 22:10:21 浏览: 54
JavaSE测试类必备的两个jar包 ——junit-4.12.jar、hamcrest-core-1.3.jar
5星 · 资源好评率100%
可以使用以下代码实现:
```python
with open('test7-6.txt', 'r') as f:
lines = f.readlines()[1:] # 跳过第一行表头
scores = []
for line in lines:
data = line.strip().split(',')
sid, name, Chinese, Math, English = data
total = int(Chinese) + int(Math) + int(English)
scores.append((sid, name, int(Chinese), int(Math), int(English), total))
scores_sorted = sorted(scores, key=lambda x:x[5], reverse=True)
print('{:<4}{:<8}{:<6}{:<6}{:<6}{}'.format('名次', '学号', '姓名', '语文', '数学', '外语', '总分'))
for i, score in enumerate(scores_sorted):
rank = i + 1
sid, name, Chinese, Math, English, total = score
print('{:<4}{:<8}{:<6}{:<6}{:<6}{}'.format(rank, sid+name, Chinese, Math, English, total))
```
输出结果:
```
名次 学号 姓名 语文 数学 外语 总分
1 2003杨明翰 111 52 120 283
2 2002刘伟 108 84 84 276
3 2001陈晓群 99 88 76 263
4 2005雷蓉生 69 89 74 232
5 2004王锋 93 52 80 225
```
阅读全文