Incorrect Calculation on 8. Part of the Whole


#1



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


My code looks okay, but I'm wondering if I'm having a problem with the for loop. The error message I get is Oops, try again. get_class_average([alice, lloyd]) returned 91.15 instead of 85.85 as expected. When I use a print statement to debug, I get a total output of 80.55. I'm normally pretty on the ball with how to figure these out, but this is the first case in which I'm genuinely lost. Any thoughts or noticing typos would be welcome!


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!
students = [lloyd, alice, tyler]
def average(numbers):
    total = sum(numbers)
    total = float(total)
    mean = total/len(numbers)
    return mean
    
def get_average(student):
    homework = average(student["homework"])
    quizzes = average(student["quizzes"])
    tests = average(student["tests"])
    weighted_total = (0.1 * homework) + (0.3 * quizzes) +\
    (0.6 * tests)
    return weighted_total
    
def get_letter_grade(score):
    if score >= 90: 
        return "A"
    elif score < 90 and score >= 80: 
        return "B"
    elif score < 80 and score >= 70:
        return "C"
    elif score < 70 and score >= 60: 
        return "D"
    else: 
        return "F"

def get_class_average(students):
    results = []
    for each in students:
        result=get_average(each)
        results.append(result)
        avg = average(results)
        return avg
        
print get_class_average(students)


#2

Inside the function get_class_average()
The final return statement should not be part of for loop but its a separate block of code inside the function and it should have same level of indentation as for loop.

Reason of error:
as return statement is part of for loop so it halts when it sees return at first iteration, return makes function stop and exit the function body.


#3

Awesome! That did it. Those indentations will get ya!


#4

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