Part of a whole


#1

This is what I have when I get an error message
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]
}

Add your function below!

def average(numbers):
total = sum(numbers)
total = float(total)
av = total / len(numbers)
return av

def get_average(student):
homework = average(student[‘homework’]) * 0.1
quizzes = average(student[‘quizzes’]) * 0.3
tests = average(student[‘tests’]) * 0.6
sum = homework + quizzes + tests
return sum

def get_letter_grade(score):
if score >= 90.0:
return 'A’
elif score >= 80.0:
return 'B’
elif score >= 70.0:
return 'C’
elif score >= 60.0:
return 'D’
else:
return ‘F’

print get_letter_grade(lloyd)

def get_class_average(class_list):
results = []
for student_item in class_list:
final = get_average(class_list)
results.append(final)
return average(results)

the error says “get_class_average([alice]) resulted in an error: list indices must be integers, not str”


Part of the Whole
#2

here:

final = get_average(class_list)

get_average can handle only a single student, not a whole class list, that is why we have a loop


#3

Isn’t that what I have:
final = get_average(class_list)

Could you show me the correct code?
Thanks for your help!


#4

Okay I understand and I changed it but I am still receiving error messages. This is my current code:

def get_class_average(class_list):
results = []
for student_item in class_list:
final = get_average(student_item)
results.append(final)
return average(results)

This is the error message:
get_class_average([alice, lloyd]) returned 91.15 instead of 85.85 as expected

Once again thanks for your stetim94.


#5

A function ends the moment a return keyword is reached, so currently your function ends in the first iteration of the loop, but to get the correct class average, the loop needs to make all its iterations, not ending in the first iteration of the loop because of return


#6

Thank you soooooooo much!!! Thanks for helping stetim94!!!


#7

by the way it worked


#8