Python嵌套列表函数返回学生考试的分数。

2024-04-27 14:23:51 发布

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

我试图编写一个名为studentGrades(gradeList)的函数,该函数接受一个嵌套列表,并返回一个包含每个学生平均分数的列表。 例如:

 grades= [['Student','Quiz 1','Quiz 2','Quiz 3','Final'],
 ['John', 100, 90, 80, 90],
 ['McVay', 88, 99, 11, 15],
 ['Rita', 45, 56, 67, 89],
 ['Ketan', 59, 61, 67, 32],
 ['Saranya', 73, 79, 83, 45],
 ['Min', 89, 97, 101, 100]]
 studentGrades(grades)

 # Sample output below
 >>> [90, 53, 64, 54, 70, 96]

我不知道如何使用嵌套循环来实现这一点。感谢任何帮助或指导。在


Tags: 函数列表johnquizstudent学生分数final
3条回答

如果你需要一个班轮

[int(sum(i[1:])/len(i[1:])) for i in grades[1:]]

输出:

^{pr2}$

正如我在评论中建议的那样,你也可以用字典来解释。字典基本上是为这样的情况而设计的,如果你想进一步使用你的数据,它们可能会被证明是有益的。 你必须首先转换你当前的结构,我假设这个结构是固定的,因为你在成绩中有一个“header”,然后是表格[name,points..]的列表。您可以:

grades= [['Student','Quiz 1','Quiz 2','Quiz 3','Final'],
 ['John', 100, 90, 80, 90],
 ['McVay', 88, 99, 11, 15],
 ['Rita', 45, 56, 67, 89],
 ['Ketan', 59, 61, 67, 32],
 ['Saranya', 73, 79, 83, 45],
 ['Min', 89, 97, 101, 100]]
gradedict = {}
for rows in grades[1:]:
    gradedict[rows[0]] = rows[1:]

初始化字典。然后是以下函数:

^{pr2}$

返回另一个字典及其相应的平均值。你可以循环输入其中任何一个的名字,也就是钥匙,打印出来。例如:

gradedict = studentGrades(gradedict)
for x in gradedict:
    print("student ",x, " achieved an average of: ",gradedict[x])

这只是告诉你如何访问元素。当然,你也可以循环键,就像我在函数中所做的那样。 希望这有帮助。在

你可以这样做:

def studentGrades(a):
    # return [sum(k[1:])/(len(k)-1) for k in a[1:]]
    # Or
    l = len(a[0]) - 1 # how many quizzes, thanks to @Mad Physicist
    return [sum(k[1:])/l for k in a[1:]]

grades= [['Student','Quiz 1','Quiz 2','Quiz 3','Final'],
 ['John', 100, 90, 80, 90],
 ['McVay', 88, 99, 11, 15],
 ['Rita', 45, 56, 67, 89],
 ['Ketan', 59, 61, 67, 32],
 ['Saranya', 73, 79, 83, 45],
 ['Min', 89, 97, 101, 100]]

final = studentGrades(grades)
print(final)

输出:

^{pr2}$

相关问题 更多 >