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
반응형
'프로그램' 카테고리의 다른 글
| [파이썬] 문제 : 알파벳 소문자와 숫자로 랜덤하게 3글자 패스워드 만들기 (0) | 2023.04.08 |
|---|---|
| [파이썬] 문제 : pandas 학생 성적 처리(index, groupby, pivot, mean, median, count) (0) | 2023.04.08 |
| [파이썬] 문제 : 터틀(turtle)로 브라질 국기 그리기(png 사용) (0) | 2023.04.08 |
| [파이썬] 문제 : N개의 피보나치 수열의 합 계산 (0) | 2023.04.07 |
| [파이썬] 문제 : 블랙잭 게임 (0) | 2023.04.07 |
댓글