Ich versuche, eine Klasse namens Student mit einem Namen, einer ID-Nummer, Testergebnissen und dem Durchschnitt der Testergebnisse zu definieren. Wenn ich das Programm ausführe, funktioniert alles außer dem Drucken des Testergebnisdurchschnitts, nachdem neue Ergebnisse an die ursprüngliche Bewertungsliste in der Klasse angehängt wurden. Es behält den ursprünglichen Durchschnitt von "Undefined" bei und ich kann nicht herausfinden, warum es nicht aktualisiert wird.Definieren von Klassenmethoden in 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
def main():
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)
main()