多门课程分数统计-文件 【问题描述】从一个文本文件内读入2门课程任意多个学生的分数,分别求出这2门课的最高分,最低分、平均分和低于平均分的人数存入文件result.txt内。 【输入形式】一个文件,文件名为grade.txt,分数都为正整数,具体数据格式见样例输入文件。 每一行为一个学生的各门课成绩,每一列为一门课成绩 【输出形式】 计算出grade.txt中所有分数的最高分,最低分、平均分和低于平均分的人数,并分4行存入result.txt的文件内。平均分保留2位小数。 输出第一行为每门课程的最高分; 第二行为每门课程的最低分; 第三行为每门课程的平均分, 第四行为每门课低于平均分的人数 每行各个数之间由一个空格分隔。 【样例输入文件grade.txt】 60 89 70 88 80 98
时间: 2024-02-11 17:09:10 浏览: 27
好的,我已经明白了。以下是Python的参考代码:
```python
# 读取文件
with open('grade.txt', 'r') as f:
lines = f.readlines()
# 将读取的数据转化为二维列表
scores = []
for line in lines:
scores.append(list(map(int, line.split())))
# 分别求出每门课程的最高分、最低分和平均分
num_students = len(scores)
num_courses = len(scores[0])
max_scores = [0] * num_courses
min_scores = [100] * num_courses
sum_scores = [0] * num_courses
for i in range(num_students):
for j in range(num_courses):
score = scores[i][j]
max_scores[j] = max(max_scores[j], score)
min_scores[j] = min(min_scores[j], score)
sum_scores[j] += score
# 计算每门课程的平均分
avg_scores = [round(sum_scores[i] / num_students, 2) for i in range(num_courses)]
# 计算每门课程低于平均分的人数
below_avg_counts = [0] * num_courses
for i in range(num_students):
for j in range(num_courses):
if scores[i][j] < avg_scores[j]:
below_avg_counts[j] += 1
# 将结果写入文件
with open('result.txt', 'w') as f:
f.write(' '.join(str(max_score) for max_score in max_scores) + '\n')
f.write(' '.join(str(min_score) for min_score in min_scores) + '\n')
f.write(' '.join(str(avg_score) for avg_score in avg_scores) + '\n')
f.write(' '.join(str(below_avg_count) for below_avg_count in below_avg_counts))
```
请注意,这个代码中的文件名是硬编码的,因此你需要将它们替换为实际的文件名。另外,这个代码假定每个学生都有相同数量的成绩,并且每个成绩都是正整数。如果你的实际数据不符合这些假设,那么你需要对代码进行适当的修改。