# Student becomes teacher, wrong numbers

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

Oops, try again. get_class_average([alice, lloyd]) returned 91.15 instead of 85.85 as expected

#2

Is it computing the average of each student in the list and then the average of those averages?

That'd look something like

processing alice
processing lloyd
computing average
returning result

right?

Does it do that? Can you find out in some way?

#3

I have no idea how I can check that, I'm sorry!

#4

Could you add code that prints out what is being done step by step?

You need to find out what it does differently from what it should right? So you would have to 1) get a firm idea of what it should do 2) find out what it does

1) can be obtained from the instructions if you haven't already got it
2) can be obtained by doing that printing

Then you'd compare those two and the part that's being done differently will tell you what action is being done wrong and then you'd look for the code that should be carrying out that action

#5

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