Just weight and see


#1



Getting this error: get_letter_grade(89) returned 'F' instead of 'B' as expected


I'd like to set the parameters to be within the range of 70-79, 80-89, etc. I think that's what's making my code error out. Why do I not need to set exact parameters for that?


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)
    total = total / len(numbers)
    return total

def get_average(student):
    homework =  average(student["homework"]) * .1
    quizzes =   average(student["quizzes"]) *.3
    tests = average(student["tests"]) *.6
    
    weighted = homework + quizzes + tests
    return weighted
    print weighted 
    
def get_letter_grade(score):
    if score >= 90:
        return "A"
    if score >= 80 >= 89:
        return "B"
    if score >= 70 >= 79:
        return "C"
    if score >= 60 >=69:
        return "D"
    else:
        return "F"
   
    print get_letter_grade(get_average(lloyd))


#2

Hi @asdfasdf05 ,

You have used a chained condition here and on several other lines ...

if score >= 80 >= 89:

For the condition to be True, this must be True ...

score >= 80

... and this must be True ...

80 >= 89

The latter is always False, so the whole condition is always False.

If you do this ...

if 80 <= score <= 89:

... then a score of 89 will result in a True condition. However, there still is a problem. What happens when score is 89.9?

There is a way to catch all possible values for score. Change all your if headers, except the first one, to elif headers. Omit the upper bounds of the conditions, so that they are something like this ...

elif score >= 80:

You will also need to remove the indentation from this statement to get it to execute ...

print get_letter_grade(get_average(lloyd))

With its current indentation, it is part of the get_letter_grade function.


#3

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