Part of the Whole


#1



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

The error message which I'm getting is-
Oops, try again. get_class_average([alice, lloyd]) returned 91.15 instead of 85.85 as expected

All my previous code was working fine, and I'm not sure what's wrong with this...


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

def get_average(student):
    homework =  0.1 * average(student["homework"]) 
    quizzes = 0.3 * average(student["quizzes"]) 
    tests = 0.6 * average(student["tests"]) 
    return homework + quizzes + 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 item in students:
        results.append(get_average(item))
        return average(results)
        print average(results)


#2

a function ends the moment a return keyword is reached

if a return keyword is reached in a loop, the loop will break

in other words, your loop breaks in its first iteration


#3

A post was split to a new topic: Part of a whole


#4

I'm a little confused by the solution of this problem. When we start the loop in "students" as shown below:

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

This refers back to a dictionary list that was created in a previous exercise:

students = [lloyd, alice, tyler]

However, this list no longer appears in the exercise. Are we to assume that this list is still in the background which allows for the solution to work? Please also let me know if I'm mistaking.


#5

Yes, Codecademy is running test cases in the background to see if you pass. You don't see it.
Outside of Codecademy, that doesn't happen and you'll have to explicitly write out test cases to see if your program is buggy or not.

To clarify, most of the inputs you create in your definition does not just refer to one case. So the students in def get_class_average(students): does not necessarily refer to ONLY students = [lloyd, alice, tyler]. I think they removed this list because your function will only evaluate that case if it was still there.


#6

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