我的函数应该将包含数字列表的列表作为输入。每个数字列表都应该代表特定学生在类(class)中获得的成绩。例如,这是一个四名学生类(class)的输入列表:
[[95, 92, 86, 87], [66, 54], [89, 72, 100], [33, 0, 0]]
我的函数应该每行打印一个,每个学生的平均成绩。我不能假设每个学生的成绩都相同。
这是我目前所拥有的:
def avg(grades):
for average in grades:
return sum(grades) / len(grades)
但是当我通过输入 avg([[95, 92, 86, 87], [66, 54], [89, 72, 100], [33, 0, 0]]) 对其进行测试时 它显示此错误:
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
avg([[95, 92, 86, 87], [66, 54], [89, 72, 100], [33, 0, 0]])
File "<pyshell#3>", line 3, in avg
return sum(grades) / len(grades)
TypeError: unsupported operand type(s) for +: 'int' and 'list'
解决方案应该是:
90.0
60.0
87.0
11.0
我该如何解决?
请您参考如下方法:
一个简单的解决方案:
students_results = []
def avg3(students):
for student in students:
students_results.append(sum(student) / len(student))
return students_results
arr = [[95, 92, 86, 87], [66, 54], [89, 72, 100], [33, 0, 0]]
print(avg3(arr))
结果:[90.0, 60.0, 87.0, 11.0]
