8. part of the whole - getting wrong average value


#1



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

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


Don't understand why this isn't giving the correct result.


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_in_class = (lloyd, alice, tyler)

# Add your function below!
def average (numbers):
    total = sum(numbers)
    total = float(total)
    ave = total/len(numbers)
    return ave
    
def get_average(student):
    homework = average(student["homework"])
    quizzes = average(student["quizzes"])
    tests = average(student['tests'])
    sum = 0.1 * homework + 0.3 * quizzes + 0.6 * tests
    return sum

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_in_class:
        ave = get_average(student)
        results.append(ave)
    return average(results)


#2

Hi @sylvia_a_lowdensbcgl ,

You have this function header ...

def get_class_average(students):

... but here, you are ignoring the function parameter, students ...

for student in students_in_class:

#3

@#$#! that was it, thanks!


#4

I have the same question.

Could you explain, please, what the the function get_class_average should return?

we have 3 students, for each of them we have average score.
so, if I understand correctly, the function get_class_average should return the average number of average score for each students.

Then, I have a question. Why the function get_class_average contains a parameter students? This function is independent on parameters.

Where is a mistake in my calculation? (I have the sane massage error: Oops, try again. get_class_average([alice]) returned 83.8666666667 instead of 91.15 as expected)

but 91.5 is the result of function get_average(alice)

thanks


#5

Hi @luda_it ,

It should return the average of the averages for each student that is in whatever list is passed to it as an argument.

The function is not independent of its parameter. When calling it, you pass it a list of student dictionaries. The list you pass it can be something other than the list that contains lloyd, alice, and tyler. It should compute the class average specifically for whatever list of student dictionaries it is passed. If it is passed the list, [alice], for example, the average it returns should be for only alice's grades.

The mistake is in the code that you submitted to Codecademy. Since that code is not posted here, we cannot identify, conclusively, the details of the problem.


#6

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