# Students variable help

#1

help please - I think I've messed up the students variable with student but cant seem to fix it?

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]
}

students = [lloyd,alice,tyler]
def average(numbers):
total = sum(numbers)
total = float(total)
total = total / len(numbers)

def get_average(students):
homework = average(students['homework'])
quizzes=average(students['quizzes'])
tests=average(students['tests'])

return 0.1 * average(student['homework']) + 0.3 * average(student['quizzes']) + 0.6 * average(student['tests'])

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

print get_class_average(students)

#3

The troublesome method is:

def get_average(students):
homework = average(students['homework'])
quizzes=average(students['quizzes'])
tests=average(students['tests'])

return 0.1 * average(student['homework']) + 0.3 * average(student['quizzes']) + 0.6 * average(student['tests'])

Two problems:

1. You are have named the parameter as students when it actually is just one student.
2. Even when you have found out the homework, quizzes and tests, yet you are again computing the average homework, quiz and test marks in this line:

return 0.1 * average(student['homework']) + 0.3 * average(student['quizzes']) + 0.6 * average(student['tests'])

this line can simply be:

return 0.1 * homeworks + 0.3 * quizzes + 0.6 * tests