4、 实验内容:在文本文件scores.txt中保存了一些专业的课程平均分,如下图所示: 编写一个Python程序,读入文本文件scores.txt中的数据,存放在二维列表中,并输出所有专业的分数;计算每个专业的最高分和最低分,按输出格式要求输出每个专业的名称、最高分、最低分以及对应的课程名(已知没有同分的情况);输出格式参照下图:
时间: 2024-02-20 17:57:00 浏览: 33
好的,我可以帮你解决这个问题。你可以将以下代码保存为一个Python文件,例如`score_analysis.py`,然后在终端中执行`python score_analysis.py`即可运行程序,得到输出结果。
```
# -*- coding: utf-8 -*-
# 定义一个空字典,用于存放每个专业的成绩
data = {}
# 读取文件
with open('scores.txt', 'r') as f:
for line in f:
# 去掉行末尾的换行符
line = line.strip()
# 将每行数据按空格分割,存放在一个列表中
items = line.split()
# 取出每行数据中的专业、课程和成绩
major, course, score = items[0], items[1], float(items[2])
# 如果该专业不存在,则将其加入字典,并初始化成绩列表
if major not in data:
data[major] = []
# 将该专业的成绩添加到成绩列表中
data[major].append((course, score))
# 输出所有专业的分数
for major, scores in data.items():
print(major)
for score in scores:
print(score[0], score[1])
print()
# 计算每个专业的最高分和最低分,并输出结果
for major, scores in data.items():
max_score = max(scores, key=lambda x: x[1])
min_score = min(scores, key=lambda x: x[1])
print('{} {} {} {}'.format(major, max_score[1], min_score[1], max_score[0]))
```
在这个程序中,我们首先定义了一个空字典`data`,用于存放每个专业的成绩。然后我们使用`with open()`语句打开文件,并逐行读取文件内容。对于每一行数据,我们首先将其按空格分割,并取出专业、课程和成绩。如果该专业在字典中不存在,则将其加入字典,并初始化成绩列表;否则将该专业的成绩添加到成绩列表中。
读取完文件后,我们首先输出所有专业的分数,然后计算每个专业的最高分和最低分,并按照要求格式输出结果。在输出结果时,我们使用`format()`方法将结果格式化输出。