# 8/9 Part of the Whole (Should return a number)

#1

When I completed and ran my code for lesson 8.9:

``````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)

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

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 student in students:
results.append(get_average(student))
return results``````

I get the following error in return: get_class_average([alice]) should return a number

I'm not sure how I'm getting this error.

#2

`results` is defined as an `Array` - `results = []`. Then the average of alice is appended and the code expects number. When you write `return results`, an `Array` is returned. Try and define `results = 0` and then just add to it in the loop.

#3

You're not averaging out the results but instead getting an array. Try:

return average(results)

#4

You need to return average(results) outside the for in loop to finish the function.

#5

Thank you! This solved it for me.

#6

i typed d same code but it returned 91.15 instead of 85.85 and its showing d error

#7

@shikhar23
So i figured it out. Same thing hapenned to me.

What you have to do is make sure you indent the "return" line so it is only ONE indent away from the "def" statement above. NOT twice, because then it would be indented one away from the "for" statement, making the "return" as part of a loop.

You want the return statement to apply to the function, not inside the loop.!