My code is calculating correctly but still giving error for Alice average


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

students = [lloyd,tyler,alice]
results = []

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

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

def get_class_average(students):
for student_name in students:
grade_test = get_average(student_name)
results.append(grade_test)
return average(results)
result=get_class_average(students)
print result, " Student Average"


#2

Hi @designninja02502 ,

Because your code is not formatted, it is difficult for other users to read and debug it. As code is being posted, you can format it by selecting it, and then by clicking the </> button above the editing area. This will enable us to see important details, such as the indentation and underscores.

We'll need to have you either format your code or post the error message to figure this one out - preferably both. Right now, we can only make educated guesses.

The problem could be due to improper indentation. It could also be because you have this outside of your functions, instead of within the get_class_average function definition ...

results = []

#3
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,tyler,alice]
results = []


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

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

def get_class_average(students):
    for student_name in students:
        grade_test = get_average(student_name)
        results.append(grade_test)
    return average(results)
result=get_class_average(students)
print result, " Student Average"

error>>>

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