2017-02-03 6 views
-4

Es folgt der Code für eine Liste von 3 Studenten, deren Noten eingegeben wurden, und ich möchte den individuellen und Klassendurchschnitt berechnen. Die durchschnittliche Funktion gibt den richtigen Wert für einzelne Schüler zurück, die Funktion get_class_average gibt jedoch nicht den richtigen Wert zurück. Dies ist ein Codecademy Kurs in Python und der Online-Compiler zeigt folgenden Fehler: Ups, noch einmal versuchen. get_class_average ([alice]) gab 83.8666666667 anstelle von 91.15 wie erwartet zurück. Was ist falsch? Es gibt keine Syntaxfehler.Python: Die Funktion gibt beim Aufruf keine Liste zurück

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) 
    return total/len(numbers) 

def get_average(student): 
    homework = average(student["homework"]) 
    quizzes = average(student["quizzes"]) 
    tests = average(student["tests"]) 
    s = 0.1*homework + 0.3*quizzes + 0.6*tests 
    return s 
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" 
    print get_letter_grade(get_average(lloyd)) 
def get_class_average(students): 
    results = [] 
    results.append(get_average(lloyd)) 
    results.append(get_average(alice)) 
    results.append(get_average(tyler)) 
    return(average(results)) 
+2

fehlt Ihnen ein ** Return-Durchschnitt (Ergebnisse) ** – NAmorim

+0

Der Kurs erwartet, dass Sie das 'Student'-Argument verwenden, nicht nur die drei festen Schüler. –

Antwort

1

Sie haben vergessen, den Druck oder Rückgabe:

def get_class_average(students): 
    results = [] 
    results.append(get_average(lloyd)) 
    results.append(get_average(alice)) 
    results.append(get_average(tyler)) 
    print average(results) 

ODER

def get_class_average(students): 
    results = [] 
    results.append(get_average(lloyd)) 
    results.append(get_average(alice)) 
    results.append(get_average(tyler)) 
    return average(results) 

Ohne den Druck, ist es nicht das Ergebnis drucken. Ohne die Rückgabe gibt es das Ergebnis nicht zurück.

+0

Danke, aber ich habe die Frage bearbeitet und die Fehlermeldung hinzugefügt. – chayan

+0

Was soll es tun? Um den Durchschnitt von Alice zu finden, würdest du nicht einfach get_average (alice) benutzen? – Douglas

+0

get_class_average verwendet nicht einmal das Argument "Schüler", warum ist es dort? – Douglas

0

Zwei Fehler hier:

Zunächst wird ein return am Ende der Funktion get_class_average() benötigen wird. Deshalb wird die Funktion nicht korrekt zurückgegeben.

Zweitens akzeptiert die Funktion get_class_average() den Parameter . Es scheint jedoch, dass davon nicht Gebrauch macht.

Verwandte Themen