排序文件中的平均分数。列和降序

2024-09-28 22:21:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个档案,每人3分。我想用这些分数,得到三个分数的平均值。分数由制表符和降序分隔。例如:

jack    10    6   11
claire  3    7    3
conrad  5    4    6

这些人的平均成绩是:

^{pr2}$

我希望这些能够打印到pythonshell,但是不能保存到文件中。在

with open("file.txt") as file1: d = {} for line in file1: column = line.split("/t") names = column[0] scores = int(column[1].strip())

我已经开始了,但我发现自己卡住了,我不知道如何继续编码。有人有办法吗?在


Tags: 文件linecolumn档案file1分数制表符平均值
3条回答

你可以用字典。在

scores = {}
with open("class6Afile.txt") as file1:
    for line in file1:
        column = line.split("/t")
        names[column[0]] = column[1:]

发布后,您可以迭代键、值对,如here所示,并根据相应的名称找到每组值的平均值。在

另外,你不能像你以前那样在数组中存储名称。我假设名称是一个数组,所以正确的方法是。在

^{pr2}$

使用集合或字典的概念。两者都很相似:它们只能包含一个特定的“键”一次。在

因此,如果您创建了一个字典来存储每个分数的内容,并使用“name”作为键,则可以创建一个如下所示的数据结构:

student_scores = {'dave': [9, 8, 11], 'john': [12, 7, 10], ... }

你可以在第二步分析这个数据结构,很容易计算出平均值。在

然后写一个循环,遍历你的student_scores,并计算每个循环的平均值。你可以这样循环使用字典:

^{pr2}$

希望这能给你一些想法,而不只是给你编码!在

另外:请记住“平均值”的定义是一个数字列表的sum,除以一个数字列表的len。幸运的是,这两个built-in functions都存在于Python中,并且可以操作列表!在

with open("class6Afile.txt") as file1:
d = {}
class Person:
def __init__(self, name, average):
        self.name = name
        self.average = average
for line in file1:
    column = line.split("/t")
    name = column[0]
    average = (int(column[1].strip()) + int(column[2].strip()) + int(column[3].strip()))/3
d.append(Person(name,average))
d.sort(key=lambda x: x.average, reverse=True)

你想要的结果在列表的顶端!在

相关问题 更多 >