# Incorrect Calculation on 8. Part of the Whole

#1

My code looks okay, but I'm wondering if I'm having a problem with the for loop. The error message I get is Oops, try again. get_class_average([alice, lloyd]) returned 91.15 instead of 85.85 as expected. When I use a print statement to debug, I get a total output of 80.55. I'm normally pretty on the ball with how to figure these out, but this is the first case in which I'm genuinely lost. Any thoughts or noticing typos would be welcome!

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

students = [lloyd, alice, tyler]
def average(numbers):
total = sum(numbers)
total = float(total)
mean = total/len(numbers)
return mean

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

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"

def get_class_average(students):
results = []
for each in students:
result=get_average(each)
results.append(result)
avg = average(results)
return avg

print get_class_average(students)``````

#2

Inside the function `get_class_average()`
The final `return` statement should not be part of `for loop` but its a separate block of code inside the function and it should have same level of indentation as for loop.

Reason of error:
as return statement is part of for loop so it halts when it sees return at first iteration, return makes function stop and exit the function body.

#3

Awesome! That did it. Those indentations will get ya!

#4

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