# 9. How is Everybody Doing?

#1

why is my class letter grade A instead of B when the class average is 83.866667?

``````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)
result = total / len (numbers)
return result

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

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

students = [lloyd, alice, tyler]
print get_class_average (students)

#3

get_letter_grade is not designed to handle a list of students.

get_letter_grade expects a number, and converts this to a letter_grade for you. So if you have a list of students, first calculate the class average, then pass the class average as argument when calling get_letter_grade

#5

Don't wory I figured it out :
print get_class_average([lloyd, alice, tyler])

#6

here:

``print get_letter_grade (students)``

get_letter_grade is called with students as argument. However, your get_letter_grade function is designed to convert a number grade to a letter grade, so it expects a number as argument, not a students list

So we need to get from students list to average grade of this students, for this we can use get_class_average

if you have still have a question, make a new topic.

#7

got it, thanks for your help!

#8