У меня такая проблема: когда я пытаюсь распечатать среднюю оценку моего класса, она выдает ошибку «индексы должны быть целыми числами, а не str».
def average
работает нормально, но второй average_class
...
Я добавляю, что этот код отлично работает в версии codecademy 2.7 (не совсем тот же код)
Как я могу запустить это на моей версии Python 3.4 ?? :)
przemyslaw = {
"name": "Przemyslaw",
"homework": [4, 5, 3, 2, 1, 5, 4],
"shorttests": [2, 4, 2],
"tests": [4, 4, 3, 5]
}
magdalena = {
"name": "Magdalena",
"homework": [5, 5, 5, 5, 4, 4, 4],
"shorttests": [4, 5, 5],
"tests": [5, 5, 4, 5]
}
def average(student):
homework = average_sub(student["homework"])
shorttests = average_sub(student["shorttests"])
tests = average_sub(student["tests"])
average = tests * 0.6 + shorttests * 0.3 + homework * 0.1
return float(average)
def average_class(students):
total = []
for loop in students:
total.append(average(loop))
return average(total)
print(average_class([magdalena, przemyslaw]))
return average(total)
, так какtotal
- это список, а не словарь, как вы ожидаете от функцииaverage
(в частности, словарь с ключами"homework"
и"shorttests"
. - person R Nar   schedule 26.11.2015