so i was just curious and i refactored the students become teacher track, this is what i ended up with:
class Person(object):
def __init__(self,name,homework,quizzes,tests):
self.name = name
self.homework = homework
self.quizzes = quizzes
self.tests = tests
def get_average(self):
return average(self.homework) * .1 + average(self.quizzes) * .3 + average(self.tests) * .6
def get_letter_grade(self):
score = self.get_average()
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):
return average([x.get_average() for x in students])
def average(numbers):
return float(sum(numbers)) / len(numbers)
lloyd = Person("Lloyd",[90.0, 97.0, 75.0, 92.0],[88.0, 40.0, 94.0], [75.0, 90.0])
alice = Person("Alice",[100.0, 92.0, 98.0, 100.0],[82.0, 83.0, 91.0],[89.0, 97.0])
tyler = Person("Tyler",[0.0, 87.0, 75.0, 22.0],[0.0, 75.0, 78.0],[100.0, 100.0])
students = [lloyd, alice, tyler]
print get_class_average(students)
print tyler.get_average()
print tyler.get_letter_grade()
print get_letter_grade(get_class_average(students))
i am confused, this shouldn’t work, right? I am particular confused about this line:
print get_letter_grade(get_class_average(students))
get_letter_grade is a method part of the Person object, how on earth can it calculate the letter_grade for all students? This must be wrong, right?