# Weight and See

#1

I was able to correct the common float error using int() but now my calculation is slightly off! I double checked my initial values.

EDIT: I believe by using int() but answer is then rounded up

ERROR MESSAGE:
Oops, try again. get_average(alice) returned 91.0 instead of the expected 91.15

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)
print total

def get_average(student):
homework = average(student[‘homework’]),
quizzes = average(student[‘quizzes’]),
tests = average(student[‘tests’])
return (int(average(student[‘homework’]))*0.10) + (int(average(student[‘quizzes’]))*0.30) + (int(average(student[‘tests’]))*0.60)

#2

Why wrap `int()`, `average()` (and more parentheses) around your equations? That will give you the incorrect answer, an error, and it’s pretty much unnecessary.

#3

You’re right. I confused myself but i fixed my last line to:

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

and it worked. Thank you for taking time to reply.

#4

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