How is Everybody Doing?


I believe that the code is correct and the output it gives is correct, but an error message keeps on popping up saying: "Oops, try again. One of the following is missing or broken when we tried to use it: alice, lloyd, tyler, students, get_class_average, get_letter_grade"

Replace this line with your code. 
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)
    result = total/len(numbers)
    return result
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"
        return "F"

print get_letter_grade(get_average(lloyd))

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

average = get_class_average([lloyd, alice, tyler])
print average
print get_letter_grade(average)


Your code is fine, well beyond your one mistake.

You have a function called average but you then give average a new value in this line:

average = get_class_average([lloyd, alice, tyler])

So, average has the correct value (for the question) as it has run through once but now average no longer points to the function.

If you was to try call get_class_average() again it will fail at the point it tries to call average().

Change your last line to the following and look what is printed out:

print average   
average = get_class_average([lloyd, alice, tyler])
print average

See how average changes from pointing to function average at (a memory address) to 83.8666666667.

With that in mind, it should now be easy for you to fix your code now.:thumbsup:


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