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

def get_average(student):
    homework=average(student['homework'])
    quizzes=average(student['quizzes'])
    tests=average(student['tests'])
    a= 0.1 * homework + \
    0.3 * quizzes + \
    0.6 * tests

    return a


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) :
    result=[]
    for student in students:
        result.append(get_average(student))
    return average(result)


get_class_average(['alice'])

'''
In above code it shows following errors:
Traceback (most recent call last):
File "python", line 57, in <module>
File "python", line 53, in get_class_average
File "python", line 28, in get_average
TypeError: string indices must be integers, not str

still there is one error.

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

First a little test:

>>> def av(L):
...  return float(sum(L))/len(L)
... 
>>> 0.1 * av([100, 92, 98, 100]) + 0.3 * av([82, 83, 91]) + 0.6 *av([89, 97])
91.14999999999999

This shows that 91.15 is the correct answer.

Now running your code gives 91.15 (replace the last statement with print(get_class_average([alice]))), so there is no error. The error must be in the code that prints Oops try again etc.

Edited 10 Months Ago by Gribouillis

This article has been dead for over six months. Start a new discussion instead.