# Lesson 11. Student Becomes the Teacher- Just Weight and See

#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)
total = total / len(numbers)
def get_average(student):
homework = average(student["homework"]) + \
average(student["quizzes"]) + \
average(student["tests"])
weighted = ("homework" * .1) + ("quizzes" * .3) + ("tests" * .6)
return weighted
Can someone help? It keeps saying "Oops, try again. get_average(alice) raised the following error: can't multiply sequence by non-int of type 'float'".

#2

def get_average(student):
homework = average(student["homework"])
quizzes = average(student["quizzes"])
tests = average(student["tests"])
weighted = (homework * .1) + (quizzes * .3) + (tests * .6)
return weighted

I think this should work. When you define get_average(student), I would separate each average into its own category: homework, quizzes, and tests (rather than one overarching homework variable). Then, when calculating the weighted grades, I'm pretty sure that putting quotation marks around each category signifies strings rather than an actual set value. So, don't put quotation marks around them. Please let me know if any of that doesn't make sense.

#3

Thank you! That helped so much.