파이썬

(파이썬) Grades 클래스

조이키트 블로그 2023. 8. 12. 12:58
728x90
반응형

아래 코드는 여러 학생들의 성적을 관리할 수 있는 클래스이다. 리스트와 딕셔너리를 사용하여 Grades 클래스의 인스턴스들을 구현하였다. 리스트는 수업의 학생들을 관리하고 딕셔너리는 각 학생들의 일련번호를 성적에 연결하고 있다.

getGrades는 한 학생의 성적 리스트를 복사해서 반환하고, getStudents는 학생 리스트를 복사해서 반환하고 있다. 

# Grades 클래스
def Grades(object):
    def __init__(self):
        self.students = []
        self.grades = {}
        self.isSorted = True

def addStudent(self, student):
    if student in self.students:
        raise ValueError('Duplicate student')
    self.students.append(student)
    self.grades[student.getIdNum()] = []
    self.isSorted = False

def addGrade(self, student, grade):
    try:
        self.grade[student.getIdNum()].append(grade)
    except:
        raise ValueError('Student not in mapping')
    
def getGrades(self, student):
    try:
        return self.grades[student.getIdNum()][:]
    except:
        raise ValueError('Student not in mapping')
    
def getStudents(self):
    if not self.isSorted:
        self.students.sort()
        self.isSorted = True
    return self.students[:]

isSorted의 인스턴스 변수는 학생 리스트에서 새로운 학생들이 추가되고 난 이후에 정렬되었는지 아닌지를 알기 위해서 사용된다. 이것을 통해 getStudents가 이미 정렬된 리스트를 또 다시 정렬하지 않도록 도와준다.

728x90
반응형