Language/Python

[ Python ] 학급 학생들의 성적 산출 프로그램

곽수진 2021. 9. 26. 19:40
반응형
어느 학급의 학생 수는 34명이고, 국어, 영어, 수학 시험을 봤을 때, 영어 점수 중 최고점과 평균이 가장 높은 학생의 아이디, 평균값(정수)을 구해 출력하는 프로그램을 작성해보자.

학생들의 아이디는 stud1, stud2, ... stud34로 저장되며 각 과목별 점수는 0~100 사이의 랜덤값으로 저장함

 

import random
classdic = {}

for i in range(34):
    classdic['stud'+str(i+1)] = [random.randint(0,100) for i in range(3)]
print(classdic, '\n')

jlist = list(classdic.values())

egrade=[]
for i in jlist:
    egrade.append(i[1])
print('영어 점수:', egrade, '\n')
print('영어 점수 최고점 : %s\n'%(max(egrade)))

avglist = []
for k, e, m in jlist:
    avg = (k+e+m)//3
    avglist.append(avg)
print('평균 점수:', avglist, '\n')

for i,j in classdic.items():
    sum1 = 0
    for k in j:
        sum1 += k
    if sum1//3 == max(avglist):
        print("아이디:", i, "평균:", sum1//3)

 

 

classdic = {} : classdic라는 이름의 빈 디렉토리 생성

 

for i in range(34):
    classdic['stud'+str(i+1)] = [random.randint(0,100) for i in range(3)]
print(classdic, '\n')

for i in range(34) : 0부터 33까지 34번 반복함

classdic['stud'+str(i+1)] : 0부터 33까지 반복하여 저장한 i 값을 'stud' 문자열 뒤에 출력함

random.randint(0,100) for i in range(3) : 국어, 영어, 수학 3 과목을 0점부터 100점까지 랜덤으로 지정함

  → 각 학생마다 국어, 영어, 수학의 점수를 출력해 classdic에 저장

 

jlist = list(classdic.values())

calssdic의 value 값들을 리스트로 생성해 jlist라는 변수에 저장함

 

egrade=[]
for i in jlist:
    egrade.append(i[1])
print('영어 점수:', egrade, '\n')
print('영어 점수 최고점 : %s\n'%(max(egrade)))

egrade = [] : 영어 점수가 들어가는 빈 리스트를 생성함

egrade.append(i[1]) : jlist에서 1번 index의 값들을 egrade 리스트에 추가함

  → jlist의 0번 index는 국어, 1번 index는 영어, 2번 index는 수학 점수임

max(egrade) : egrade 리스트에 저장된 값 중 최대값을 출력함

 

avglist = []
for k, e, m in jlist:
    avg = (k+e+m)//3
    avglist.append(avg)
print('평균 점수:', avglist, '\n')

avglist = [] : 학생들의 평균 점수가 들어가는 빈 리스트를 생성함

for k, e, m in jlist : jlist에서 국어(k), 영어(e), 수학(m) 점수를 가져옴

avg = (k+e+m)//3 : 국어, 영어, 수학 점수를 3으로 나눈 값을 avg 변수에 저장함

avglist.append(avg) : 위에서 구한 평균 값을 avglist에 추가함

 

for i,j in classdic.items():
    sum1 = 0
    for k in j:
        sum1 += k
    if sum1//3 == max(avglist):
        print("아이디:", i, "평균:", sum1//3)

sum1 = 0 : sum1의 값을 0으로 초기화 함

▶ 학생들의 세 과목 점수를 sum1에 저장

▶ sum1을 3으로 나눈 값이 avglist의 최대값과 같다면 최대값을 가진 학생의 아이디와 평균을 출력함

 

 

결과값 출력 모습

반응형