2015-10-26 1 views
-2

Je suis en train de faire un exercice sur Codecademy avec l'erreur suivante:.nom global « student_average » est pas défini

« Oops, essayez à nouveau get_class_average ([alice]) a donné lieu à une erreur: nom global « student_average 'est pas défini »

pour le code suivant:

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] 
} 

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

def get_average(student): 
    homework = average(student['homework']) 
    quizzes = average(student['quizzes']) 
    tests = average(student['tests']) 
    student_average = homework*10/100 + quizzes*30/100 + tests*60/100 
    return student_average 

def get_letter_grade(score): 
    if score >= 90: 
     return "A" 
    elif score < 90 and score >= 80: 
     return "B" 
    elif score < 80 and score >= 70: 
     return "C" 
    elif score < 70 and score >= 60: 
     return "D" 
    else: 
     return "F"   

print get_letter_grade(lloyd) 

def get_class_average(students): 
    results = [] 
    alpha2 = 0 
    for item in students: 
     alpha2 = student_average(student) 
     results.append(alpha2) 
    return alpha2/len(students) 

print get_class_average([lloyd, alice, tyler]) 
+1

Pouvez-vous s'il vous plaît indenter votre programme correctement. et vous semblez utiliser 'student_average' comme une fonction, au lieu de' get_average() '. –

Répondre

4

Vous avez un appel erroné de votre fonction get_average(student) dans votre boucle for. Au lieu de l'appeler par get_average(student) vous avez utilisé student_average(student).

Depuis student_averageest en fait une variable et il ne se définit pas en dehors de votre fonctionget_average(), il en résulte une erreur évidente depuis il est visible à l'intérieur de la fonction qu'elle a été définie:

Cet appel:

for item in students: 
    alpha2 = student_average(student) 

devrait plutôt être:

for item in students: 
    alpha2 = get_average(student)