2017-08-29 1 views
2

Ich versuche einen durchschnittlichen Notenrechner in Python für CodeAcademy zu schreiben. Ich bekomme diesen FehlerTypeError: nicht unterstützte Operandentyp (en) für +: 'int' und 'NoneType' beim Summieren einer Liste

auf die durchschnittliche Funktion, total = sum(numbers). Ich verstehe, dass es bedeutet, dass ich versuche, zwei verschiedene Arten zu summieren, was nicht möglich ist. Aber ich verstehe nicht, woher kommt diese NoneType, wenn ich versuche, nur eine Liste von Zahlen aus einem gegebenen Wörterbuch zu summieren?

Auch, was wäre eine bessere Möglichkeit, diesen Code zu schreiben? Ich nehme an, es gibt viel einfachere Möglichkeiten, genau das gleiche zu tun.

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

Sie nichts Rückkehr von 'get_average()' –

Antwort

2

Sie nichts von get_average() Rückkehr, also wenn sum beginnt (0 als erste Akkumulationswert verwendet wird, versucht es None und 0 hinzuzufügen, die die Fehlermeldung erklärt.

Verwandte Themen