Student Becomes the Teacher 8.Part of the Whole


#1



Can someone help me? I dont understand whats wrong. 
Getting this all the time
**"get_class_average([alice, lloyd]) returned 91.15 instead of 85.85 as expected"**

my code is:

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 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"
print get_letter_grade(get_average(lloyd))

students=[lloyd, alice, tyler]

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

Thank you<3


#2

Here:

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

Are you sure that this return statement should be inside the for loop?


#3

I am getting the same problem? and I can't seem to see differences in the replies people are giving?


#4

Can you explain why the return statement should not be indented?


#5

Sure.

return statement terminates execution of the function.

So let's say that we have the list [alice, lloyd]. We enter the for loop and now student = alice. We append get_average(alice) to results and we return average(results). This is the end of the function.

What about lloyd? His average is not included in the results. That is why return must be placed after for loop.


#6

Thank you!

This message was sent from the MacSide


#7

You're very welcome :slight_smile:


#8

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