我创建了一个文本文件,其中包含学生的姓名以及他们的成绩格式:
name1, 1
name2, 3
name3, 2
name1, 7
...
我已按以下格式打印到文本文件:
file=open(studentclass+' Grades.txt', 'a')
file.write(name + ', ' + score + '\n')
file.close()
如何使用分数而不是名称来计算每个名称的平均分数?
答案 0 :(得分:1)
这应该有效:
from collections import defaultdict
from itertools import chain
grades = defaultdict(list)
with open("Grades.txt") as f:
for line in f:
name, score = line.split(", ")
grades[name].append(int(score))
for name in grades:
print(name, sum(grades[name])/len(grades[name]), sep=": ")
print("Total average (student average):",
sum(sum(grades[name])/len(grades[name]) for name in grades) / len(grades))
print("Total average (raw):",
sum(chain.from_iterable(grades[name] for name in grades)) / sum(len(grades[name]) for name in grades))
修改:已更改为符合每位学生平均值的要求。
修改:添加了全球平均值。