计算具有名称和数字的文本文件的平均分数

时间:2016-03-07 14:13:38

标签: python python-3.x

我创建了一个文本文件,其中包含学生的姓名以及他们的成绩格式:

name1, 1
name2, 3
name3, 2
name1, 7
...

我已按以下格式打印到文本文件:

file=open(studentclass+' Grades.txt', 'a')
file.write(name + ', ' + score + '\n')
file.close()

如何使用分数而不是名称来计算每个名称的平均分数?

1 个答案:

答案 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))

修改:已更改为符合每位学生平均值的要求。

修改:添加了全球平均值。

相关问题