Student Becomes the Teacher


#1



Oops, try again. get_class_average([alice, lloyd]) returned 91.15 instead of 85.85 as expected


i couldn't figure out whats wrong with the code..i tried in all ways but getting this error..any help would be thankful


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)
    total/=len(numbers)
    return total
def get_average(student):
    homework=average(student["homework"])
    quizzes=average(student["quizzes"])
    tests=average(student["tests"])
    final_score=(0.1*homework + 0.3*quizzes + 0.6*tests)
    return final_score
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"
#print get_letter_grade(get_average(alice))
def get_class_average(students):
    result=[]
    for work in students:
        result.append(get_average(work))
        return average(result)
print get_class_average(students)


#4

Are you sure your return statement should be inside of your loop? That doesn't really seem to be right.
Try to move it from inside of your loop to outside fo it and see how the result will change (not much but will)

Yes, it's correct.
It's a just more simplified way of writing

total = total / len(numbers)

#5

thnx for the help..it worked


#6

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'])
homework*=0.1
quizzes*=0.3
tests*=0.6
return homework+quizzes+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"
result=get_average(lloyd)

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