Oops, try again. get_class_average([alice]) should return a number


#1



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


I get an error from codeacademy, not from the code interpreter. The error is: "Oops, try again. get_class_average([alice]) should return a number"


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"])
    return homework*0.1 + quizzes*0.3 + tests*0.6

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"

print get_letter_grade(get_average(lloyd))

def get_class_average(students):
    results = []
    print "test"
    for x in students:
        print get_average(x)
        #results.append(get_average(x))


#2

You should be appending your results here.

This is how you do that.

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

#3

I had the appending done (just commented it out for debugging) but I missed the actual return.

Thanks!


#4

I was struggling with the same error.

apparently like the other guy said. appending fixed it.
you could also try calling the class average function and printing it to know where your bug is.

Here's my code. Successful:

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):
total= sum(numbers)
float_total=float(total)
avg=float_total/len(numbers)
return avg
def get_average(student):
homework= average(student["homework"])
quizzes= average(student["quizzes"])
tests= average(student["tests"])

weighted_average=homework*0.1 + quizzes*0.3 + tests*0.6
return weighted_average

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(clas):
results=[]
for student in clas:
x=get_average(student)
results.append(x)
return average(results)


#5

Okay!

You're welcome, have fun coding! :slight_smile: