我的函数应该将包含数字列表的列表作为输入。每个数字列表都应代表特定学生在课程中获得的成绩。例如,这是一个四个学生的班级的输入列表:

[[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]

关于python - 如何修复TypeError:+不支持的操作数类型:“int”和“list”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57237997/

10-12 21:58