8/9 error help please


#1


Oops, try again. get_class_average([alice]) resulted in an error: list indices must be integers, not str


Oops, try again. get_class_average([alice]) resulted in an error: list indices must be integers, not str 

Replace this line with your code. Do not remove the backticks that are above or below this line.
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"]))
    x = 0.10 * homework + 0.30 * quizzes + 0.60 * tests
    return x

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(students):
    results = []
    for student in students:
        results.append(get_average(students))
    return average(results)


#2

I think you meant student not students here.


#3

You must get average of a student not students


#4

Hello :slightly_smiling: Bonjour :slightly_smiling:

My English is very bad but if anyone can help me I try my luck ... I have to spend my afternoon yesterday without success and the message I posted on the forum remains unanswered. Thank you in advance for your help !

I can not get a pass this year! Despite the fact that I was gone from forum to forum in anything I get stuck!

A solution ? :slightly_smiling: Merci !


Here is my code !!

lloyd = {
"noms": "Lloyd",
"devoirs": [90.0, 97.0, 75.0, 92.0],
"quiz": [88.0, 40.0, 94.0],
"tests": [75.0, 90.0]
}
alice = {
"noms": "Alice",
"devoirs": [100.0, 92.0, 98.0, 100.0],
"quiz": [82.0, 83.0, 91.0],
"tests": [89.0, 97.0]
}
tyler = {
"noms": "Tyler",
"devoirs": [0.0, 87.0, 75.0, 22.0],
"quiz": [0.0, 75.0, 78.0],
"tests": [100.0, 100.0]
}

def moyenne(nombres):
somme = sum(nombres)
somme = float(somme)
taille = len(nombres)
taille = float(taille)
total = somme/taille
return total

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

def calcule_moyenne(etudiant):
devoirs = average(etudiant['devoirs'])
quiz = average(etudiant['quiz'])
tests = average(etudiant['tests'])
note = 0.1 * devoirs + 0.3 * quiz + 0.6 * tests
return note

def ecrire_lettre_note(note):
if note >= 90:
return "A"
elif note >= 80:
return "B"
elif note >= 70:
return "C"
elif note >= 60:
return "D"
else:
return "F"
print ecrire_lettre_note(calcule_moyenne(lloyd))

def calcule_classe_moyenne(etudiants):
resultats = []
for etudiant in etudiants:
resultats.append(calcule_classe_moyenne(etudiant))
return moyenne(resultats)

print calcule_classe_moyenne(resultats)
print ecrire_lettre_note(note)


and this is what gives me the console :

B
Traceback (most recent call last):
File "python", line 61, in
NameError: name 'resultats' is not defined


Thanks for your help... :slightly_smiling:


#5

I think the problem is here. resultats is only defined inside of the calcule_classe_moyenne() function.


#6

I have therefore replaced by this ?


print calcule_classe_moyenne()resultats
print ecrire_lettre_note()note



#7

You had it almost right, but made it worse. :smiley:

You can't call calcule_classe_moyenne(resultats) because there is no variable resultats. I think you should make a list students = [lloyd, alice, tyler] and call calcule_classe_moyenne(students).


#8

Sniff @eveat
It does not work !! :confused:


#9

What happens now? Do you get an error?


#10

Yes the console displays the same mistake ... I do not know why: /


#11

tiens, voici mon code

lloyd = {
"noms": "Lloyd",
"devoirs": [90.0, 97.0, 75.0, 92.0],
"quiz": [88.0, 40.0, 94.0],
"tests": [75.0, 90.0]
}
alice = {
"noms": "Alice",
"devoirs": [100.0, 92.0, 98.0, 100.0],
"quiz": [82.0, 83.0, 91.0],
"tests": [89.0, 97.0]
}
tyler = {
"noms": "Tyler",
"devoirs": [0.0, 87.0, 75.0, 22.0],
"quiz": [0.0, 75.0, 78.0],
"tests": [100.0, 100.0]
}

Ajoutez votre fonction ci-dessous !

Ajoutez votre fonction ci-dessous !

def moyenne(nombres):
total = sum(nombres)
total = float(total)
total = total / len(nombres)
return total

def calcule_moyenne(etudiant):
devoirs = moyenne(etudiant["devoirs"])
quiz = moyenne(etudiant["quiz"])
tests = moyenne(etudiant["tests"])
return 0.1*devoirs + 0.3*quiz + 0.6*tests

def ecrire_lettre_note(note):
if note >= 90:
return "A"
elif note >= 80:
return "B"
elif note >= 70:
return "C"
elif note >= 60:
return "D"
else: return "F"

def calcule_classe_moyenne(etudiants):
resultats = []
for x in etudiants:
resultats.append(calcule_moyenne(x))
return moyenne(resultats)

etudiants = [lloyd,alice,tyler]
print calcule_classe_moyenne(etudiants)
print ecrire_lettre_note(calcul_classe_moyenne(etudiants))


#12

Merci, c'est a peu prĂ©s le mĂȘme que le mien mais... ça ne fonctionne toujours pas :confused:


La console dit :

File "python", line 52
SyntaxError: 'return' outside function


#13

Il y a une erreur dans ce que je t'ai donné, le dernier print c'est "calcule".
Pour ce que dit ta console, je ne sais pas ce que tu as en ligne 52, si tu as copié collé ce que je t'ai donné, fais attention à l'indentation.

def calcule_classe_moyenne(etudiants):
----resultats = []
----for x in etudiants:
--------resultats.append(calcule_moyenne(x))
----return moyenne(resultats)


#14

hello

l'indentation est bonne... mais j'ai "None" dans la console et ça me demande si j'ai bien défini "calcule_classe_moyenne" ...

toujours coincée donc :confused:


#15

lloyd = {
"noms": "Lloyd",
"devoirs": [90.0, 97.0, 75.0, 92.0],
"quiz": [88.0, 40.0, 94.0],
"tests": [75.0, 90.0]
}
alice = {
"noms": "Alice",
"devoirs": [100.0, 92.0, 98.0, 100.0],
"quiz": [82.0, 83.0, 91.0],
"tests": [89.0, 97.0]
}
tyler = {
"noms": "Tyler",
"devoirs": [0.0, 87.0, 75.0, 22.0],
"quiz": [0.0, 75.0, 78.0],
"tests": [100.0, 100.0]
}

def moyenne(nombres):
somme = sum(nombres)
somme = float(somme)
taille = len(nombres)
taille = float(taille)
total = somme/taille
return total

def calcule_moyenne(etudiant):
devoirs = average(etudiant['devoirs'])
quiz = average(etudiant['quiz'])
tests = average(etudiant['tests'])
note = 0.1 * devoirs + 0.3 * quiz + 0.6 * tests
return note

def ecrire_lettre_note(note):
if note >= 90:
return "A"
elif note >= 80:
return "B"
elif note >= 70:
return "C"
elif note >= 60:
return "D"
else:
return "F"

def calcule_classe_moyenne(etudiants):
resultats = []
for etudiant in etudiants:
resultats.append(calcule_classe_moyenne(etudiant))
return moyenne(resultats)

def etudiants (lloyd,alice,tyler):
print calcule_classe_moyenne(etudiants)
print ecrire_lettre_note(calcule_classe_moyenne(etudiants))texte préformaté indenté par 4 espaces


#16

Salut dans ton for loop tu as appele la function que tu a creé au lieux d appele la function calcul_moyen()
Ici

def calcule_classe_moyenne(etudiants):
resultats = []
for etudiant in etudiants:
resultats.append(calcule_classe_moyenne(etudiant))
return moyenne(resultats)

Le for loop

for etudiant in etudiants:
resultats.append(calcule_classe_moyenne(etudiant))

essay de change calcule_classe_moyenne() par calcule_moyenne()

E que veut tu faire avec ici?

def etudiants (lloyd,alice,tyler):
print calcule_classe_moyenne(etudiants)
print

#17

j'ai mis le

pour que toutes les notes des 3 Ă©tudiants soit prises en comptes (sinon j'avais une erreur soit sur "lloyd" soit sur "alice"

le changement
calcule_classe_moyenne() par calcule_moyenne()
ne fonctionne pas non plus :confused: ...


#18

Alora essay sa ajout la list des etudiants dans le co de just avant le def calcule_classe_moyenne

etudiants = [lloyd, alice, tyler ]

Et enleve cet parti du code

def etudiants (lloyd,alice,tyler):
print calcule_classe_moyenne(etudiants)
print

#19

PUNAISE fini !! ça a fonctionné !!

Merci beaucoup :slightly_smiling: !