# Part of the Whole

#1

I can’t seem to figure out what’s wrong with my code. Could someone explain it to me? Many thanks in advance

This is the error message I’m getting:
get_class_average([alice, lloyd]) returned 91.15 instead of 85.85 as expected

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

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

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(student))
return average(results)

``````

#2

you need to move the line

``````return average(results)
``````

outside of the for loop, 91.15 is Alice’s average alone, your loop hits Alice first and appends her average but then returns the average of results which at that point only contains Alice’s average

#3

Thank you so much! Didn’t realize that mistake at all.

#4

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.