编写一个Python程序,读入文本文件scores.txt中的数据,存放在二维列表中,并输出所有专业的分数;计算每个专业的最高分和最低分,按输出格式要求输出每个专业的名称、最高分、最低分以及对应的课程名(已知没有同分的情况)解题步骤
时间: 2024-02-25 22:56:19 浏览: 86
好的,我可以帮你解决这个问题。首先,我们需要打开并读取文件中的数据。可以使用Python内置的`open()`函数和`readlines()`函数来完成这个任务。
代码如下:
```python
with open('scores.txt', 'r') as f:
lines = f.readlines()
```
接下来,我们需要对数据进行处理,将其存储到一个二维列表中。可以使用Python内置的`split()`函数来分割每一行数据,并将其存储到二维列表中。
代码如下:
```python
data = []
for line in lines:
line = line.strip().split(',')
data.append(line)
```
现在,我们已经将数据存储到了一个二维列表中。接下来,我们需要计算每个专业的最高分和最低分,并按照输出格式输出结果。可以使用Python内置的`max()`和`min()`函数来计算最高分和最低分。
代码如下:
```python
# 计算每个专业的最高分和最低分
max_scores = {}
min_scores = {}
for line in data:
subject = line[1]
score = int(line[2])
if subject not in max_scores:
max_scores[subject] = score
else:
max_scores[subject] = max(max_scores[subject], score)
if subject not in min_scores:
min_scores[subject] = score
else:
min_scores[subject] = min(min_scores[subject], score)
# 按照输出格式输出结果
for subject in max_scores:
print(subject)
print("最高分:{},课程名:{}".format(max_scores[subject], [line[0] for line in data if line[1] == subject and int(line[2]) == max_scores[subject]][0]))
print("最低分:{},课程名:{}".format(min_scores[subject], [line[0] for line in data if line[1] == subject and int(line[2]) == min_scores[subject]][0]))
```
这样,我们就完成了这个问题的解决。完整代码如下:
```python
with open('scores.txt', 'r') as f:
lines = f.readlines()
data = []
for line in lines:
line = line.strip().split(',')
data.append(line)
max_scores = {}
min_scores = {}
for line in data:
subject = line[1]
score = int(line[2])
if subject not in max_scores:
max_scores[subject] = score
else:
max_scores[subject] = max(max_scores[subject], score)
if subject not in min_scores:
min_scores[subject] = score
else:
min_scores[subject] = min(min_scores[subject], score)
for subject in max_scores:
print(subject)
print("最高分:{},课程名:{}".format(max_scores[subject], [line[0] for line in data if line[1] == subject and int(line[2]) == max_scores[subject]][0]))
print("最低分:{},课程名:{}".format(min_scores[subject], [line[0] for line in data if line[1] == subject and int(line[2]) == min_scores[subject]][0]))
```
希望能帮到你!
阅读全文
相关推荐


















