# Part of the Whole

#1

Oops, try again. 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)
total = float(total) / len(numbers)

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

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

What's wrong with the code ?

#2

When you use the return function in a particular block of code, it ends that block there.

In this block,

you could remove the first line of return, since it is repeated. In the second line, you also do not need to return that line since it is simply appending to results.

What you need returned, is the last and your indentation is off. You need to return the entire for loop.

Kindly consider the below

``````def get_class_average(students):
results = []
for student in students:
results.append(get_average(student))
return average(results)``````

#3

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