2015-08-31 9 views
0

Когда я выполняю приведенный ниже код. Я получаю это сообщение об ошибкеCodeacademy, Python - объект «NoneType» не является итерабельным »

get_class_average([alice]) resulted in an error: 'NoneType' object is not iterable

Кто-то может мне помочь?

Код

lloyd = { 
    "name": "Lloyd", 
    "homework": [90.0, 97.0, 75.0, 92.0], 
    "quizzes": [88.0, 40.0, 94.0], 
    "tests": [75.0, 90.0] 
} 
alice = { 
    "name": "Alice", 
    "homework": [100.0, 92.0, 98.0, 100.0], 
    "quizzes": [82.0, 83.0, 91.0], 
    "tests": [89.0, 97.0] 
} 
tyler = { 
    "name": "Tyler", 
    "homework": [0.0, 87.0, 75.0, 22.0], 
    "quizzes": [0.0, 75.0, 78.0], 
    "tests": [100.0, 100.0] 
} 
# Add your function below! 
def average(numbers): 
    total = sum(numbers) 
    total = float(total)/1 
    total = total/int(len(numbers)) 
    return total 
def get_average(l_student): 
    homework = average(l_student["homework"]) * 0.1 
    quizzes = average(l_student["quizzes"]) * 0.30 
    tests = average(l_student["tests"]) * 0.6 
    media = homework + quizzes + tests 
    return media 
def get_letter_grade(score): 
    if score >= 90: 
     return "A" 
    elif score >= 80: 
     return "B" 
    elif score >= 70: 
     return "C" 
    elif score >= 60: 
     return "D" 
    else: 
     return "F" 
def get_class_average(students): 
    results = [] 
    for i in students: 
     results = results.append(get_average(i)) 
    return average(results) 
+3

Название слишком общий – zyxue

+0

Вы должны включать в себя полную обратное прослеживание/ошибка. По крайней мере, номер строки; но просто включите все это :). – Cyphase

ответ

6

append изменяет список его был вызван, и возвращает None. Поэтому, вместо того, чтобы

for i in students: 
    results = results.append(get_average(i)) 

Вы должны просто позвонить append, а не назначать его (бесполезно) возвращаемое значение в любом месте:

for i in students: 
    results.append(get_average(i)) 
+0

Спасибо Mureinik. –

Смежные вопросы