TypeError:不支持的操作数类型为+:'int'和'NoneType'当总结列表时

问题描述:

我正在尝试为CodeAcademy课程编写Python的平均成绩计算器。我一直在平均函数收到此错误TypeError:不支持的操作数类型为+:'int'和'NoneType'当总结列表时

TypeError: unsupported operand type(s) for +: 'int' and 'NoneType' 

total = sum(numbers)。我知道这意味着我试图总结两种不同的类型,这是不可能的。但是我不明白这个NoneType是从哪里来的,如果我试图从给定的字典中总结一个数字列表?

另外,什么是更好的方式来编写此代码?我认为有更简单的方法可以完全相同。

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] 
}  
class_list = [lloyd, alice, tyler] 
students = [lloyd, alice, tyler] 

# Add your function below! 


def average(numbers):  
    total = sum(numbers) 
    averege_grade = float(total)/len(numbers) 
    return averege_grade 

def get_average(student): 
    homework = average(student["homework"]) 
    quizzes = average(student["quizzes"]) 
    tests = average(student["tests"]) 
    total_average = float(homework) * 1 + float(quizzes) * 3 + float(tests) * 6 

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(class_list): 
    results = [] 
    for student in class_list: 
     resultadinho = get_average(student) 
     results.append(resultadinho) 
     return average(results) 
print get_class_average(students) 
print get_letter_grade 
+1

你不返回任何东西从'get_average()' –

sum开始(使用0作为第一累计值时其实不是返回从get_average()什么,所以,它会尝试添加None0这也解释了错误信息。