본문 바로가기
프로그램

[파이썬] 문제 : 성적 계산하기

by 오디세이99 2023. 4. 8.
728x90
반응형

no = [1,2,3,4,5]
name = ['길동01','길동02','길동03','길동04','길동05']
kor = [62, 97, 95, 70, 87]
eng = [75, 89, 76,86, 88]
mat = [42, 63, 64, 79, 66]

dic = {'no':no, 'name':name, 'kor':kor, 'eng':eng, 'mat':mat}     # 데이터로 딕셔너리를 만듬

def cal_Score(sc):              # score를 구분하는 함수. (문제에 정확한 정의가 없음)
    rtn = ''
    if sc >= 90:
        rtn = 'A'
    elif sc >= 80 and sc < 90:
        rtn = 'B'
    elif sc >= 70 and sc < 80:
        rtn = 'C'
    elif sc >= 60 and sc < 70:
        rtn = 'D'
    elif sc >= 50 and sc < 60:
        rtn = 'E'
    elif sc < 60:
        rtn = 'F'
    return rtn


d_sum = []              # 각 학생마다 합계 저장 리스트. 나중에 출력(합계,평균,최고,최저 에서 같은 방법 사용하기 위해서)
d_avg = []              # 각 학생마다 평균 저정 리스트
print(f"no        name      kor     eng     mat     tot     avg     score")         # 출력 제목
print('-'*66)                          # '-'를 66개 출력
for i in range(len(dic['no'])):              # 각 학생의 계산을 위한 반복문, .len(no) 하면 학생수
    p_sum = dic['kor'][i] + dic['eng'][i] + dic['mat'][i]  # 한 학생의 성적 합계
    p_avg = p_sum / 3                 # 한 학생의 평균
    score = cal_Score(p_avg)          # score 구함
    print(f"{dic['no'][i]:2d}        {dic['name'][i]:4} {dic['kor'][i]:5d} {dic['eng'][i]:7d} {dic['mat'][i]:7d} {p_sum:8d}    {p_avg:3.2f}    {score:}")
    d_sum.append(p_sum)                # 학생의 합계 리스트에 보관
    d_avg.append(p_avg)                # 학생의 평균 리스트에 보관

d_kor = dic['kor']
d_eng = dic['eng']
d_mat = dic['mat']
print('-'*66)
print(f"{0:2d}        {'합계':4} {sum(d_kor):5d} {sum(d_eng):7d} {sum(d_mat):7d} {sum(d_sum):8d}    {sum(d_avg):3.2f}")
cnt = len(no)
print(f"{0:2d}        {'평균':4} {sum(d_kor)//cnt:5d} {sum(d_eng)//cnt:7d} {sum(d_mat)//cnt:7d} {sum(d_sum)//cnt:8d}    {sum(d_avg)//cnt:3.2f}")
print(f"{0:2d}        {'최고':4} {max(d_kor):5d} {max(d_eng):7d} {max(d_mat):7d} {max(d_sum):8d}    {max(d_avg):3.2f}")
print(f"{0:2d}        {'최저':4} {min(d_kor):5d} {min(d_eng):7d} {min(d_mat):7d} {min(d_sum):8d}    {min(d_avg):3.2f}")

728x90
반응형

댓글