8/9 get_class_average([alice, lloyd]) returned 91.15 instead of 85.85 as expected


#1



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

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


i think the code is good but not go


please help!


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)
    total = total / len(numbers)
    return total
    
def get_average(student):
    homework = average(student['homework'])
    quizzes = average(student['quizzes'])
    tests = average(student['tests'])
    return 0.1 * homework + 0.3 * quizzes + 0.6 * tests
    
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"



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


#2

return statement in the get_class_average function is inside the for loop. It means that it will be executed in the first iteration of the loop.

In other words, for students = [alice, lloyd] your function will calculate get_average(alice) and will append calculated result to the results list and will immediately return average value of results. lloyd has been simply omitted in the calculations.

return should be outside the for loop/


#3

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