Я пытаюсь определить класс Student с именем, идентификационным номером, результатами тестов и средними показателями тестов. Когда я запускаю программу, все работает, за исключением того, что печатает среднюю оценку теста после того, как новые оценки добавлены в исходный список баллов в классе. Он сохраняет исходное среднее значение «Undefined», и я не могу понять, почему он не обновляется.Определение методов класса в Python 3.43
class Student:
"""The Student class stores the first and last name of a student,
as well as all of their exam scores and overall average."""
def __init__(self, Id, first='', last=''):
"""Create a student object (e.g., Student(123654, Jane, Doe))"""
self.Id = Id
self.first_name = first
self.last_name = last
self.scores = []
self.average = 'Undefined'
def getId(self):
"""Retrieves student's Id number"""
return self.Id
def getfirst(self):
"""Retrieves student's first name"""
return self.first_name
def getlast(self):
"""Retrieves student's last name"""
return self.last_name
def getscore(self):
"""Retrieves list of student's test scores"""
return self.scores
def getaverage(self):
"""Retrieves student's average test score"""
return self.average
def add_score(self, score):
"""Updates student's list of test scores"""
self.scores.append(score)
return self.scores
def calculate_average(self):
"""Updates student's average test score using updated list of scores"""
self.average = sum(self.scores)/len(self.scores)
return self.average
def __str__(self):
"""Organizes student's information into a printable statement"""
return "ID: " + self.Id + " Name: " + self.first_name + " " + \
self.last_name + " Average Score: " + self.average
Защиту основной():
print('This program reads student data from a file, prompts the')
print('user for the total number of exams completed, and outputs ')
print('the average score for each student.')
infile = open("student_data.txt", "r")
student_list = []
num_exams = int (input('Enter the number of exams completed: '))
for line in infile:
Id, first, last = line.split()
student = Student(Id, first, last)
print('Enter scores for student', Id)
for i in range(num_exams):
score = int (input('Enter an exam score: '))
student.add_score(score)
student_list.append(student)
infile.close()
for student in student_list:
student.getscore
student.calculate_average
student.getaverage
print(student)
основной()