Program Language/python
성적처리 프로그램 - index 값으로 평균, 석차 구하기
개발하는 주디씨
2022. 12. 2. 14:50
파이썬을 이용한 성적처리 프로그램
<점수 평균을 이용한 석차 구하기- index 활용>
알고리즘 배경
3명의 학생들은 각각 중간고사와 기말고사 점수를 가지고 있다. 이 두 개의 점수를 가지고 개인의 석차를 알아보려고 한다. 석차는 두 가지 시험 점수(중간고사, 기말고사)의 평균으로 계산한다.
필수 조건
* 학번, 이름, 중간고사 점수, 기말고사 점수를 입력받아 처리해야 한다.
* Score 클래스형 객체를 생성한다.
* 생성자 매개변수를 활용해야 한다.
구현 포인트
최대한 석차를 간단하게 구하기 위해 자체 인덱스 값을 석차로 활용한 예제이다.
핵심은 딕셔너리를 활용하여 key와 value로 이름과 점수를 mapping 해주어 index를 활용하는 것이다. 이때, 생각해봐야 할 문제로는 딕셔너리를 리스트화 하여야 index에 접근할 수 있다는 것이 포인트이다.
파이썬 기초에 충실하게 작성한 코드이다. 추후 develop 해야 하는 코드이니 참고용으로 사용하자. 아래 코드에서는 학생 3명의 점수가 모두 입력되어야만 연산으로 하도록 하였으며, 중간에 발생하는 이슈에 대해서는 고려하지 않았다.
또한 석차 계산 시 중요하게 다뤄지는 동석차에 관련해서도 이번 코드에서는 고려대상으로 선정하지 않았다. 단순히 기본 석차 흐름에 대한 이해 위주로 코드를 작성하였다.
Class Score:
num = 0
name = ""
mid = 0
end = 0
avg = 0
reselut_dic = {}
def __init(self, no, name, mid, end):
self.no = no
self.name = name
self.mid = mid
self.end = end
def getName(self):
return self.name
def getAvg(self):
Score.avg = float(float(self.mid) + float(self.end)/2.0)
Score.reselt_dic[self.name] = Score.avg
def getRank(self):
tmp = list(Score.result_dic.items()) #객체를 리스트화
tmp.sort(key=lambda x:x[1], reverse=True) #원본리스트 정렬
return tmp.index((self.getName(), self.getAvg()))+1 #인덱스 시작이 0부터 이므로 +1
st1, st2, st3 = None, None, None
##메인코드 부분##
for i in range(3):
num = input("학번 :")
name = input("이름 :")
mid = input("중간고사 점수 :")
end = input("기말고사 점수 :")
if i == 0:
st1 = Score(num, name, mid, end)
if i == 1:
st2 = Score(num, name, mid, end)
if i == 2:
st3 = Score(num, name, mid, end)
print("%s의 평균점수는 %d입니다" % (st1.getName(), st1.getAvg()))
print("%s의 평균점수는 %d입니다" % (st2.getName(), st2.getAvg()))
print("%s의 평균점수는 %d입니다" % (st3.getName(), st3.getAvg()))
print("=========================================================")
print("%s의 석차는 %d등 입니다" % (st1.getName(), st1.getRank()))
print("%s의 석차는 %d등 입니다" % (st2.getName(), st2.getRank()))
print("%s의 석차는 %d등 입니다" % (st3.getName(), st3.getRank()))