7. Sending a Letter


#1

Hi I'm getting a Oops, try again. get_letter_grade(68) returned 'F' instead of 'D' as expected. But its gives the result "B" in the window

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

def get_letter_grade(score):
    if score >= 90:
        return "A"
    elif score >= 80:
        return "B"
    elif score >= 70:
        return "C"
    elif score >= 69:
        return "D"
    else:
        return "F"
        
print get_letter_grade(get_average(lloyd))

#2

You have a typo in this part

change 69 to 60 and you should be fine.

If I can suggest something, in this part

you are reffering to average function twice. First when you are assinging averages to homework and second in your return statement.

My part looks like that

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

In your code you can leave just the return and remove the rest, it also works.


#3

Thanks for the help!