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