Хотя я бы внес изменения в остальную часть кода, все ваши проблемы находятся в пределах calculateAverages(marks_list)
, по крайней мере, по этому вопросу.
В вашем коде происходит несколько проблем. Сначала я коснусь сообщения об ошибке, которое вы видите:
TypeError: unsupported operand type(s) for +=: 'float' and 'str'
Это исключение возникает в вашей строке sum += marks[j][i]
, потому что вы пытаетесь добавить первую строку всуммы. Чтобы исправить это, вам нужно пропустить первый элемент в marks_list
:
def calculateAverages(marks_list):
...
for i in range(1, len(marks_list[0])):
for j in range(1, len(marks_list)):
...
Кроме того, строка, которая выдавала ошибку (sum += marks[j][i]
), действительно должна смотреть наmarks_list
вместо:
sum += marks_list[j][i]
Я также воспользуюсь этой возможностью, чтобы указать на ошибку в вашем усреднении. Вы устанавливаете промежуточный итог sum
на 0
перед циклическим просмотром любых столбцов в marks_list
, когда вам нужно сбросить его на 0
до каждого столбца.
Собираем изменения, которые я описал для calculateAverages(marks_list)
:
def calculateAverages(marks_list):
print marks_list
average_list = []
for i in range(1, len(marks_list[0])):
sum = 0
for j in range(1, len(marks_list)):
sum += marks_list[j][i]
average = sum/len(marks_list)
average_list.append(average)
print average_list