4、 实验内容:在文本文件scores.txt中保存了一些专业的课程平均分,如下图所示: 编写一个Python程序,读入文本文件scores.txt中的数据,存放在二维列表中,并输出所有专业的分数;计算每个专业的最高分和最低分,按输出格式要求输出每个专业的名称、最高分、最低分以及对应的课程名(已知没有同分的情况);输出格式参照下图:
时间: 2024-02-20 07:59:21 浏览: 72
跟我学习javascript的循环
好的,下面是代码实现,注释中会有详细解释:
```python
scoreslist = [] # 用来存放二维列表
with open("scores.txt","r",encoding="utf-8") as fi: # 以中文编码方式打开文本文件
for line in fi: # 遍历文件中每一行数据
scoreslist.append(line.strip().split()) # 将每一行数据去掉空格和换行符后,按空格分割成一个列表,追加到二维列表中
no = len(scoreslist[0]) - 1 # 科目数 = 第一行数据中的元素个数 - 1
num = len(scoreslist) - 1 # 专业数 = 数据行数 - 1
for i in range(num+1): # 遍历所有数据行,包括第一行
print("{0:>20}".format(str(scoreslist[i]))) # 输出每行数据
print() # 换行
for i in range(1, num+1): # 遍历所有专业,从第二行开始
for j in range(1, no+1): # 遍历所有科目,从第二列开始
if int(scoreslist[i][j]) == max(map(int, scoreslist[i][1:])): # 如果当前分数等于该专业的最高分
scoreslist[i].append(scoreslist[0][j]) # 将该科目名称追加到该专业的数据行末尾
scoreslist[i].append(scoreslist[i][j]) # 将该科目分数追加到该专业的数据行末尾
if int(scoreslist[i][j]) == min(map(int, scoreslist[i][1:])): # 如果当前分数等于该专业的最低分
scoreslist[i].append(scoreslist[0][j]) # 将该科目名称追加到该专业的数据行末尾
scoreslist[i].append(scoreslist[i][j]) # 将该科目分数追加到该专业的数据行末尾
print("专业:{0:<10}最高分:{1:>4}({2:<})最低分:{3:>4}({4:<})".format(scoreslist[i][0], max(map(int, scoreslist[i][1:-2])), scoreslist[i][-2], min(map(int, scoreslist[i][1:-2])), scoreslist[i][-1])) # 输出该专业的名称、最高分、最低分和对应的科目名称
```
这段代码的主要思路是:首先读取文本文件中的数据,将其按行分割成一个二维列表,然后计算出科目数和专业数。接着遍历每个专业和每个科目,找出每个专业的最高分和最低分,以及对应的科目名称,存放在二维列表中。最后按照要求输出每个专业的名称、最高分、最低分和对应的科目名称。
阅读全文