Part of the Whole

#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)
def get_average(student):
homework = average(student["homework"])
quizzes = average(student["quizzes"])
tests = average(student["tests"])
return homework * 0.1 + quizzes * 0.3 + tests * 0.6
if score >= 90:
return "A"
elif score >= 80 and score < 90:
return "B"
elif score >= 70 and score < 80:
return "C"
elif score >= 60 and score < 70:
return "D"
else:
return "F"
def get_class_average(students):
results = []
for student in students:
results.append(get_class_average(students))
return average(results)
print results``````

#2

here:

``results.append(get_class_average(students))``

you call get_class_average again (the function you are currently executing), so the function will endlessly call itself. you should call get_average. to get the average for each student (this is for individual students, so use `student`, not `students`)

a function ends the moment a return keyword is reached, in your case in the first run of the loop, you might want to change the indent of return so that return executes after the for loop

If you need more help, post an updated version of your code

#3

Thank u very much. It really works

#4