Stuck on final part, student becomes the teacher!


Hi there, stuck on this last part, when I click save and submit I can see a class average of 83.8666666667 which is an A grade however I get an error message: "Oops, try again. Did you remember to print the letter grade for the class's average?" Do any of you know why this is as I cannot seem to figure it out. Many thanks :slight_smile:

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]

students = [lloyd, alice, tyler]

# Add your function below!
def average(numbers):
    total = sum(numbers)
    total = float(total)
    average = total / len(numbers)
    return average
def get_average(student):
    homework = average(student["homework"])
    quizzes = average(student["quizzes"])
    tests = average(student["tests"])
    total = 0.1*homework + 0.3*quizzes + 0.6*tests
    return total
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'

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


get_letter_grade is function you build which has one parameter (score), which is expected to be a number. So when when we want to get the letter grade for the class average, we would first need to calculate the class average. Once we calculated the class average, and pass the class average as argument for get_letter_grade

which function do we have to calculate the class average?


mate, it's cause that would be a "B" grade not an "A" grade


Your problem is that you called get_letter_grade with the parameter average. Average is a function you created, it isn't a value like 83 that would have the function return "B".

Basically, you need to nest the first print statement in the last one like this:


This will use the get_class_average function on your list, students, returning their average grade in a list before using your average() function from earlier to obtain the average of the values in that list, returning the value.
Then, your get_letter_grade function will use that value to determine what the letter grade should be.

Hope this helps.


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