【问题描述】从一个文本文件内读入任意多个学生的分数,求出最高分,最低分和平均分存入文件result.txt内。
【输入形式】一个文件,文件中分数之间由换行隔开,输入的文件名为namegrade.txt。输入的分数都是整数。
【输出形式】计算出namegrade.txt中所有分数的最高分、最低分及其学生名字和平均分并分3行存入result.txt的文件内,最高分最低分学生姓名多于一人时,按升序输出。平均分保留1位小数。具体格式参考输出样例。
输出第一行为最高分;第二行为最低分;第三行为平均分。
【样例输入文件namegrade.txt】
张兰 60
李广 80
王小刚 80
【样例输出文件result.txt】
Max 80 李广 王小刚
Min 60 张兰
Average 73.3
【说明】
namegrade.txt文件中的数据已提供,编程读入namegrade.txt文件数据并处理,并把结果保存到result.txt文件中。
【评分标准】
已经帮你写完了示例代码,望采纳
# 读入文件
with open('namegrade.txt') as f:
data = f.readlines()
# 初始化变量
max_grade = 0
min_grade = 100
total_grade = 0
max_names = []
min_names = []
# 遍历每一行数据
for line in data:
# 分割学生名和分数
name, grade = line.split()
# 转换为整型
grade = int(grade)
# 累加总分
total_grade += grade
# 更新最高分和最低分
if grade > max_grade:
max_grade = grade
max_names = [name]
elif grade == max_grade:
max_names.append(name)
if grade < min_grade:
min_grade = grade
min_names = [name]
elif grade == min_grade:
min_names.append(name)
# 计算平均分
average_grade = round(total_grade / len(data), 1)
# 写入结果文件
with open('result.txt', 'w') as f:
f.write(' '.join(max_names) + '\n')
f.write(' '.join(min_names) + '\n')
f.write(str(average_grade))
上面的代码使用了文件的读写操作来解决问题。首先通过 open()
函数打开输入文件,然后用 readlines()
函数读入每一行的数据到一个列表中。
接下来遍历列表,把每一行数据分割为学生名和分数,然后把分数转换为整型。累加总分,并更新最高分和最低分。
最后,计算平均分,并把最高分和最低分的学生名和平均分分别写入输出文件。
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!