2013-09-28 2 views
0

Je travaille sur ce problème de Code Academy et ce que je veux que le code fasse est de renvoyer les tests, les questionnaires et les moyennes des devoirs pour chaque étudiant séparément.Codeacademy: Moyennes

C'est ce que j'ai pour le code pour le moment.

Il dit que ce message d'erreur «syntaxe invalide» et plus encore.

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(some): 
    return sum(some)/len(some) 

students = [lloyd, alice, tyler] 
def get_class_average(students): 
    for student in students: 
     total += get_average(student) 
    return float(total)/len(students) 
+0

la traceback vous indique les numéros de ligne –

+0

-1 faute d'effort. –

Répondre

1

Il semble que vous avez manqué un bouclés avant la

def average... 

Il devrait être

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 ... 

également à get_average_class vous ne dites pas ce que get_average est. Je suppose que c'est quelque chose qui utilise average que vous avez omis, mais si vous voulez dire moyenne que vous avez un problème.

2

Vous appelez get_average() (je suppose que vous voulez dire average() ici) avec un dictionnaire, pas une liste. Donc sum() ne fonctionnera pas avec elle. Afin d'obtenir les devoirs réels ou un quiz ou une liste de test, vous devez faire total += get_average(student['homework']). Il vous manque aussi un } après votre dictionnaire tyler. Cela fera python pense que le bit def average fait partie du dictionnaire, mais il ne peut pas être, d'où l'erreur.

0
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(some): 
    return sum(some)/len(some) 

students = [lloyd, alice, tyler] 
def get_class_average(students): 
    for student in students: 
     total += get_average(student) 
    return float(total)/len(students) 
0

Vous avez oublié de fermer vos accolades avant la fonction average.