# Part of the Whole / list indices must be integers, not str" error

#1
``````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]
}

def average(numbers):
total = sum(numbers)
total = float(total)
avg = total / len(numbers)
return avg

def get_average(student):
homework = average(student["homework"])
quiz = average(student["quizzes"])
test = average(student["tests"])
return 0.1 * homework + 0.3 * quiz + 0.6 * test

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 item in students:
results.append(get_average(students))
return average(results)``````

I get "Oops, try again. get_class_average([alice]) resulted in an error: list indices must be integers, not str" error,

#2

Copy the function call from the error message into your own code and run again. Look at the error message in the console window. If not immediately obvious what's up, start adding prints in that area to see what value is incorrect. And make sure that you have understood the error message as it tells you what you are looking for.

#3

I'm not sure if i understand but when i copy the function call

``get_class_average([alice])``

at the end i get following errors

``````Traceback (most recent call last):
File "python", line 52, in <module>
File "python", line 49, in get_class_average
File "python", line 28, in get_average
TypeError: list indices must be integers, not str``````

#4

Which tells you where it happened. Go look at that place in your code (see my suggestions above)

#5

Thanks,

Changed the last part to below and it fixed it.

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

#6

OH! I was getting this too.

I was using "get_average(results)", not "average(results)"