8. Please Help! --> Oops, try again. get_class_average([alice]) resulted in an error: 'function' object has no attribute '__getitem__'


#1

I've been looking through this thread trying to see where I went wrong but haven't been able to figure it out. I'm not quite sure what the error actually means, so if you could please take a look at my code and explain what the error means/where I went wrong, I would greatly appreciate it. Thank you!

Once again, the error is: Oops, try again, get_class_average([alice]) resulted in an error: 'function' object has no attribute 'getitem'

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 0.1 * average(student["homework"]) + \
0.3 * average(student["quizzes"]) + 0.6 * average(student["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"

print get_letter_grade(lloyd)

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


#2

Also, I apologize for the indents being incorrect. They were correct when I was writing my post, but came out incorrect. I'm not sure how to fix that, so if someone could point it out, I'd be happy to fix it so my code can be properly evaluated.


#3

__getitem__ is invoked by the [] operator, and a function does indeed not support that action.

Codecademy's error message mentions how it called your code, so you can do the same thing to reproduce the error for yourself which will make Python tell you more.

Formatting: highlight the code and click the "Preformatted text" button in the post editor


#4

For the second last line
You wrote:
results.append(get_average[student])

The right way:
results.append(get_average(student))


#5

hopefully this helps