Python Beginner - Student Becomes the Teacher - Part of the whole


#1

Hi guys, when trying to Save and Submite the code at the end of the "Part of the Whole" in the Python Course, in the module Student becomes the teacher, I receive the error:

Oops, try again. getclass_average([alice]) resulted in an error: 'float' object is not callable_

I can figure what's wrong with my code.

Here is my 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)
	average = total / len(numbers)
	return average

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

def get_letter_grade(score):
	if score >= 90:
		return "A"
	elif score >= 80 and score < 90:
		return "B"
	elif score >= 70 and score < 80:
		return "C"
	elif score >= 60 and score < 70:
		return "D"
	else:
		return "F"
		
get_letter_grade(get_average(lloyd))

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

Thanks.


#2

On the last line instead of printing the average of the results you should return that value

return average(results)


#3

I was actually using return.. I tried print to see if I would receive anything.. Just edited to reuturn. Sorry. Still get the same error.


#4

Any other sugestion or tip? I'm really stuck.. already tried to start it all again.


#5

Change your average variable to something else : I think it conflicts with the average() function:

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

# this prints 91.15:
print get_class_average([alice])

#6

Thanks, it workes as you suggested:

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

#7

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