Return value incorrect


The code compiles fine but the function get_class_average returns incorrect value.
Following is the error message: get_class_average([alice]) returned 83.8666666667 instead of 91.15 as expected.

I expected it to return the correct value as the entries of the marks are right i suppose.

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)
    return total/len(numbers)
def get_average(student):
    homework = average(student["homework"])
    quizzes = average(student["quizzes"])
    tests = average(student["tests"])
    s = 0.1*homework + 0.3*quizzes + 0.6*tests
    return s
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"
        return "F"
    print get_letter_grade(get_average(lloyd))
def get_class_average(students):
    results = []
    return average(results)


your get class average function should work for one, two (any combi) and three students.

use a loop to loop over students, the function parameter


How to do that? can we not pass the entire results list as a parameter?


here you declare your function:

def get_class_average(students):

and in the next exercise you will add a function call:

print get_class_average(argument)

your function has one parameter (students), and as argument you can pass a list of: one student, two students or three students. The argument is then copied into the parameter. So to make your function work for any lists, you should loop over your function parameter


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