Part of Whole issues (couldn't find answer in other posts)


#1



https://www.codecademy.com/courses/python-beginner-en-qzsCL/1/4?curriculum_id=4f89dab3d788890003000096

Error --- get_class_average([alice, lloyd]) returned 91.15 instead of 85.85 as expected


I've checked the average of each student and they come out correctly, so I'm not sure why it's returning alice's average as the answer to the average of alice + lloyd. Both Alice and Lloyd get_average is accurate.


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

def get_average(student):
    homeworkav = average(student["homework"])
    quizzesav = average(student["quizzes"])
    testsav = average(student["tests"])
    return .10 * homeworkav + .30 * quizzesav + .60 * testsav
    
def get_letter_grade(score):
    if score >= 90:
        return "A"
    elif score >= 80:
        return "B"
    elif score >= 70:
        return "C"
    elif score >= 60:
        return "D"
    else:
        return "F"

print get_letter_grade(get_average(lloyd))

#the following is for testing purposes
#print get_average(lloyd)
#print get_average(alice)
#print get_average(tyler)
#av = get_average(lloyd) + get_average(alice)
#print av

def get_class_average(students):
    results= []
    for student in students:
        results.append(get_average(student))
        return average(results)

Thank you, very much, for your time and assistance.


#2

Indentation is off, so that you only return the first average.


#3

Dammit...I thought I checked my indents. I do love that python is very whitespace strict, so it's embarrassing that I got caught messing it up.

Thank you, so much, for your help. :slight_smile:


#4

def get_class_average(students):
----results = []
----for student in students:
---------results.append(get_average(student))
----return average(results)