What's wrong with code for 9/9


#1

I am getting the error message "one of the following is missing or broken when we tried to use it: alice, lloyd, tyler, students, get_class_average, get_letter_grade"
Everything cleared until section 9/9 when I tried to print on the last two lines...what's going on?

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/=len(numbers)
return total
def get_average(student):
homework = average(student["homework"])
quizzes = average(student["quizzes"])
tests = average(student["tests"])
total = .1*average(student["homework"]) + .3*average(student["quizzes"]) + .6*average(student["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"
else:
return "F"
def get_class_average(students):
results = []
students = [lloyd, alice, tyler]
for student in students:
results.append(get_average(student))
return average(students)
print get_class_average(students)
print get_letter_grade(get_class_average(students))


#2

Your issue is in your last function.

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

You should not be declaring a list inside the function as these students names, the function is meant to be called with any set of data.

Declare your list outside of the function, and it should work.


#3

mine isnt working but i thought i got everything right...

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"]))
    quizzes=(average(student["quizzes"]))
    tests=(average(student["tests"]))
    return (.10*homework+.30*quizzes+.60*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=[]
    students=[lloyd,alice,tyler]
    for student in students:
        results.append(get_average(student))
    return average(students)
print get_class_average(students)
print get_letter_grade(get_class_average(students))

whats wrong with it?


#4

@ficorc

Refer to the second answer by andrewjlavoie