8.Part of the whole! Oops, try again. get_class_average([alice]) should return a number

#1

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

def get_average(student):
homework=average(student["homework"])
quizzes=average(student["quizzes"])
tests=average(student["tests"])
results = (homework * 0.1) + (quizzes * 0.3) + (tests * 0.6)
return results
return 0.1*homework
return 0.3*quizzes
return 0.6*tests

if score>=90:
return "A"
elif score>=80:
return "B"
elif score>=70:
return "C"
elif score>=70:
return "C"
elif score>=60:
return "D"
else:
return "F"

students={"students":["lloyd","alice","tyler"]}
def get_class_average(students):

results=[]
for students in students:
get_average(students)
results.append(students)
return results``````

Oops, try again. get_class_average([alice]) should return a number. help me out with this

#2

Where to start, lets start here:

``students={"students":["lloyd","alice","tyler"]}``

students should be a list containing the lloyd, alice and tyler dictionary, if you don't remember, revisit 3. put it together

here:

``for students in students:``

why use the same name for the iterator and the list you are looping over? This can only cause trouble. given the iterator contains individual student, maybe you should name it as such?

here:

``get_average(students)``

you calculate the average grade for a student. But you don't store this is average grade anywhere, so how are you going to append it to results?

a function ends the moment a return keyword is reached, so currently your function ends in the first run of the loop. This means your function will not calculate the correct class average for any class with 2 or more students, place return outside the loop.

you need to return the average of results of the list, maybe an idea to use your `average()` function?

#3

thanks much

#4