Print results from "Student Becomes the Teacher"?


#1



https://www.codecademy.com/en/courses/python-beginner-en-qzsCL/1/4?curriculum_id=4f89dab3d788890003000096


My code is accepted as correct for the lesson, but I would like to print the results and it does not. I'm not sure if the code is actually correct?


printout of average of "get_average(student)"?


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)
    return float(total)/len(numbers)
    
def get_average(student):
    homework = average(student["homework"])
    quizzes = average(student["quizzes"])
    tests = 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 >= 60:
        return "D"
    else:
        return "F"


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


#2

well, there are two problems. A function ends the moment a return keyword is reached, so return average(results) will end the function, so print average(results) isn't reached

a function doesn't execute unless called. So, you will need to call the function to get a result in the output window

to print what a function returns, add a print keyword before the function call


#3

wow, thanks for the quick reply. I'm sorry I now see that the next lesson (#10 How is everybody doing) explains that we need to define the students list:

now the last few lines of the code looks like this:

def get_class_average(students):
    results=[ ]
    for student in students:
        results.append(get_average(student))
    return average(results)
students = [lloyd, alice, tyler]
print get_class_average(students)   
print get_letter_grade(get_class_average(students))

#4

or is that because python needs to know to which students to apply the function?


#5

here:

def get_class_average(students):

we have our function with parameter students, function parameters are placeholders until we call the function and supply an argument:

# calling function with arguments students,
#list you defined on line above
print get_class_average(students)

so parameters don't know what value they are until you call the function, then the value of the argument gets passed along to the function parameter. Given function don't execute until called, parameter can be placeholders


#6

Cool! Thanks for your help!


#7