학업 환경에서는 시험이나 평가가 끝난 후 학생들의 성적을 산출해야 하는 경우가 매우 흔합니다. 이 글에서는 미리 정해진 성적 기준에 따라 자동으로 등급을 부여하는 파이썬 프로그램을 만들어 보겠습니다. 이 프로그램을 'A 성적 계산기'라고 부르겠습니다.
성적 기준
아래는 이번 프로그램에서 사용할 성적 산출 기준입니다. 백분율 점수에 따라 등급이 결정됩니다.
score >= 90 : "O" score >= 80 : "A+" score >= 70 : "A" score >= 60 : "B+" score >= 50 : "B" score >= 40 : "C"
40점 미만인 경우에는 모든 조건에 해당하지 않으므로, 코드에서는 최종적으로 F(낙제) 등급이 부여되도록 else 문으로 처리했습니다.
프로그램 설계 방식
성적 계산기를 구현하기 위한 전체적인 접근 방식은 다음과 같습니다.
학생 정보(학번, 이름)와 과목별 획득 점수를 저장할 변수와 리스트(배열)를 초기화합니다.
사용자로부터 화면상의 입력값을 받아 위 변수에 저장하는 함수를 정의합니다.
for 반복문을 활용해 각 과목별 점수를 모두 합산하는 로직을 설계합니다.
if와 elif 조건문을 사용하여 학생이 획득한 점수 범위를 판별하고, 그 결과를 특정 등급으로 분류하는 계산기를 구현합니다.
마지막으로 위에서 정의한 함수들을 지정된 순서대로 실행하는 메인 함수를 작성합니다.
프로그램을 실행하고 값을 입력하면 최종 결과를 확인할 수 있습니다.
성적 계산 프로그램 전체 코드
아래는 위 설계 방식에 따라 작성한 성적 계산 프로그램입니다. 클래스 기반으로 구현되어 있으며, 프로그램을 실행하면 순차적으로 입력값을 요청하고, 입력이 완료되면 최종 결과를 출력합니다.
class grade_calculator:
def __init__(self):
self.__roll_number = 0
self._Name = ""
self.__marks_obtained = []
self.__total_marks = 0
self.__percentage = 0
self.__grade = ""
self.__result = ""
def setgrade_calculator(self):
self.__roll_number = int(input("Enter Roll Number: "))
self.__Name = input("Enter Name: ")
print("Enter 5 subjects marks: ")
for n in range(5):
self.__marks_obtained.append(int(input("Subject " + str(n + 1) + ": ")))
def Total(self):
for i in self.__marks_obtained:
self.__total_marks += i
def Percentage(self):
self.__percentage = self.__total_marks / 5
def calculateGrade(self):
if self.__percentage >= 90:
self.__grade = "0"
elif self.__percentage >= 80:
self.__grade = "A+"
elif self.__percentage >= 70:
self.__grade = "A"
elif self.__percentage >= 60:
self.__grade = "B+"
elif self.__percentage >= 50:
self.__grade = "B"
elif self.__percentage >= 40:
self.__grade = "C"
else:
self.__grade = "F"
def Result(self):
count = 0
for x in self.__marks_obtained:
if x >= 40:
count += 1
if count == 5:
self.__result = "PASS"
elif count >= 3:
self.__result = "COMP."
else:
self.__result = "FAIL"
def showgrade_calculator(self):
self.Total()
self.Percentage()
self.calculateGrade()
self.Result()
print(self.__roll_number, "\t", self.__Name, "\t", self.__total_marks, "\t", self.__percentage, "\t", self.__grade, "\t",
self.__result)
def main():
gc = grade_calculator()
gc.setgrade_calculator()
gc.showgrade_calculator()
if __name__ == "__main__":
main()
코드 주요 구성 요소 살펴보기
이 프로그램은 다음과 같은 핵심 메서드들로 구성되어 있습니다.
- setgrade_calculator(): 학번, 이름, 그리고 5개 과목의 점수를 사용자로부터 입력받습니다.
- Total(): 리스트에 저장된 과목별 점수를 모두 더해 총점을 계산합니다.
- Percentage(): 총점을 과목 수(5)로 나누어 평균 백분율을 구합니다.
- calculateGrade(): 백분율에 따라 O, A+, A, B+, B, C, F 중 해당 등급을 판정합니다.
- Result(): 각 과목이 40점 이상인지 확인하여 PASS(합격), COMP.(재시험 대상), FAIL(낙제)을 결정합니다. 5개 과목 모두 40점 이상이면 합격, 3개 이상이면 재시험 대상, 그 외에는 낙제로 처리됩니다.
- showgrade_calculator(): 앞선 모든 메서드를 순서대로 호출한 뒤, 학번·이름·총점·백분율·등급·결과를 한 줄로 출력합니다.
실행 결과
위 코드를 실행하면 아래와 같은 결과를 얻을 수 있습니다. 학번과 이름, 5개 과목의 점수를 차례로 입력하면 최종 성적표가 출력됩니다.
Enter Roll Number: 3 Enter Name: raj Enter 5 subjects marks: Subject 1: 86 Subject 2: 75 Subject 3: 69 Subject 4: 55 Subject 5: 92 3 Kumar 377 75.4 A PASS
실행 예시에서 총점은 377점, 백분율은 75.4%로 계산되었으며, 이는 70점 이상 80점 미만 구간에 해당하므로 A 등급이 부여되었습니다. 또한 모든 과목에서 40점 이상을 받았기 때문에 최종 결과는 PASS로 표시됩니다.
이처럼 파이썬의 클래스, 리스트, 조건문, 반복문만 활용해도 실용적인 성적 관리 프로그램을 손쉽게 만들 수 있습니다. 필요에 따라 과목 수를 변경하거나, 성적 기준을 조정하거나, 파일 입출력을 추가하는 방식으로 확장할 수도 있습니다.