Solve this error


#1



11. Student become the teacher

list indices must be integers, not str.
This is the error message thrown when i try to run my code


Replace this line with your code. 
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) #to convert float value. Average will have all digits
    average=total/len(numbers)
    return average
    
def get_average(student):
    homework=average(student["homework"])
    quizzes=average(student["quizzes"])
    tests=average(student["tests"])
    get_average=.10*homework+.30*quizzes+.60*tests
    return get_average
    
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 n in students:
        get_class_average_specific=get_average(students)
        results.append(get_class_average_specific)
    return average(results)


#2

Hi, i think the problem is because, you parse a list to function get_average, not index of the list.

instead of this:

get_class_average_specific=get_average(students)

change to this:

get_class_average_specific =get_average(n)

variable n is the index of students list

then, create a list like this outside the function.

students = [lloyd, alice, tyler]

make sure the list content is same as the dictionary name.
finally call the function.

print get_class_average(students)

Hope this help.


#3

that was it !!!!!!!!!
thank you ...:slight_smile:


#4

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