多门课程分数统计-文件
【问题描述】从一个文本文件内读入2门课程任意多个学生的分数,分别求出这2门课的最高分,最低分、平均分和低于平均分的人数存入文件result.txt内。
【输入形式】一个文件,文件名为grade.txt,分数都为正整数,具体数据格式见样例输入文件。
每一行为一个学生的各门课成绩,每一列为一门课成绩
【输出形式】
计算出grade.txt中所有分数的最高分,最低分、平均分和低于平均分的人数,并分4行存入result.txt的文件内。平均分保留2位小数。
输出第一行为每门课程的最高分;
第二行为每门课程的最低分;
第三行为每门课程的平均分,
第四行为每门课低于平均分的人数
每行各个数之间由一个空格分隔。
【样例输入文件grade.txt】
60 89
70 88
80 98
【样例输出文件result.txt】
80 98
60 88
70.00 91.67
1 2
【说明】
这个题目需要有grade.txt文件提供数据,并把结果保存到result.txt文件中。
自己使用pycharm或idle编程测试时,需要在程序所在文件夹,建立一个数据文件,名为grade.txt
grade.txt第一列的数据为第1门课程多名学生的分数,第二列为第2门课程多名学生的分数,中间由一个空格分开。
cg平台上grade.txt文件已提供的文件
可以参考下
file = open('grade.txt', 'r', encoding='utf-8')
course_1_list = []
course_2_list = []
content = file.readline().strip()
while content:
data_list = content.split(" ")
course_1_list.append(int(data_list[0]))
course_2_list.append(int(data_list[1]))
content = file.readline().strip()
file.close()
file = open("result.txt", 'w', encoding='utf-8')
# 最高分
file.write("%d %d" % (max(course_1_list), max(course_2_list)) + "\n")
# 最低分
file.write("%d %d" % (min(course_1_list), min(course_2_list)) + "\n")
# 平均分
course_1_avg = sum(course_1_list) / len(course_1_list)
course_2_avg = sum(course_2_list) / len(course_2_list)
file.write("%.2f %.2f" % (course_1_avg, course_2_avg) + "\n")
# 低于平均分的人数
count_1 = len(list(filter(lambda x: x < course_1_avg, course_1_list)))
count_2 = len(list(filter(lambda x: x < course_2_avg, course_2_list)))
file.write("%d %d" % (count_1, count_2))
file.close()