8. Parts of the whole


#1


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

message says that get_class_average is returning 91.15 (average of Alice). Cannot understand why the function is not taking the average of all the results.


students=[lloyd,tyler,alice]
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)
    avg = total / len(numbers)
    return avg
def get_average(student):
    homework = average(student["homework"])
    quizzes = average(student["quizzes"])
    tests = average(student["tests"])
    weightedmean=0.1*homework+0.3*quizzes+0.6*tests
    return weightedmean
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:
        result=get_average(student)
        results.append(result)
        return average(results)

print get_class_average(students)
print get_letter_grade(get_class_average(students))


#2

a function ends the moment a return keyword is reached, even when the return keyword is reached in a loop

so, your function ends in the first iteration/run of your loop


#3

Thanks. That makes sense to me. How do I get around that?


#4

moving the return outside the loop, so the whole loop can run.


#5

Figured that out as soon as I asked the question :sweat_smile: cheers


#6

I was hoping you would, given you now know the problem, the next logic step is: How do i solve it? This thought proccess is important as a programmer, which is why i didn't just give you the answer, but let you think about it.


#7

MY code says line 58 students is not defineds


#8

what do you want me to say? You should have created a new topic, not hijack this one. But understanble for new learners to do so, so that is okay i guess

but then there is no code included, so i am just suppose to guess what is wrong? How on earth do you expect me to help you with so little information? What would you do if you where in my position?


#9

"Rudest reply by a moderator - of the the day", goes to this guy.


#10

yep, i will happily take the price :slight_smile:


#11

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