2017-08-29 63 views
2

我正在嘗試爲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()' –

回答

2

sum開始(使用0作爲第一累計值時其實不是返回從get_average()什麼,所以,它會嘗試添加None0這也解釋了錯誤信息。

相關問題