Part of the Whole


#1



I don't see what I'm doing wrong. I keep getting this error:


Oops, try again. get_class_average([alice]) resulted in an error: 'tuple' object has no attribute 'append'


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]
}

def average(numbers):
    average = sum(numbers)
    total = average
    total = float(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:
        get_average(student)
        results.append(get_average(student))
    return average(results)


#2

Try to call the function like this (without rectangular brackets)?
get_class_average(alice)


#3

Hi @codermeira,

You have this in the get_class_average function ...

    results = ()

That assigns a tuple to results. You need an empty list rather than an empty tuple.


#4

I found the error.
was writing:

results = ()

instead of:

results = []

#5

First, that's not a complete solution, as we now have the following error:
Oops, try again. get_class_average([alice]) resulted in an error: 'function' object has no attribute 'results'

Second, the instructions specifically said we were to create an empty list, and the very beginning of this course said to use parens, not brackets, for lists... so, are we not actually creating a list, but rather a set of dictionary entries?


#6

try this:

from previous forum post:

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

it looks like we don't need the extra:

 get_average(student)

that it asked for!


#7

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