320x100
# 이 수식의 포인트는 enumerate 로써 2개의 원소를 분할해서 출력해주는것
# 그리고 2개로 분할된 원소를 keys가 아닌 items로 사용했다는 점이다.
studentCnt = ({'cls01':18},{'cls02':21},{'cls03':20},{'cls04':19},
{'cls05':22},{'cls06':20},{'cls07':23},{'cls08':17})
totalCnt = 0
minStdCnt = 0; minCls = ''
maxStdCnt = 0; maxCls = ''
deviation = []
for idx, dic in enumerate(studentCnt):
for k, v in dic.items():
totalCnt += v
if maxStdCnt < v:
maxStdCnt = v
maxCls = k
if minStdCnt == 0 or minStdCnt > v:
minStdCnt = v
minCls = k
avgCnt = round((totalCnt / len(studentCnt)),2)
print(f'전체 학생 수 :{totalCnt}')
print(f'평균 학생 수: {avgCnt}')
print(f'학생 수가 가장 적은 학급: {minCls}, 학생 수 : {minStdCnt}')
print(f'학생 수가 가장 많은 학급: {maxCls}, 학생 수 : {maxStdCnt}')
for idx, dic in enumerate(studentCnt):
for k, v in dic.items():
deviation.append(v- avgCnt)
print(f'학급별 학생 편차: {deviation}')
'''
# 내가 시도하려고 했던 코드
# ValueError: invalid literal for int() with base 10: 'cls01'
# 에러로 인해서 실패했다.
# 근본적으로 튜플안의 딕셔너리, 각 딕셔너리의 키값을 꺼내와서 합쳐주려고했는데
# 문자열과 숫자열은 합칠수 없다고 나와서 당황스러웠다.
studentCnt = ({'cls01':18},{'cls02':21},{'cls03':20},{'cls04':19},
{'cls05':22},{'cls06':20},{'cls07':23},{'cls08':17})
total = 0
for i in studentCnt:
for a in i.keys():
total += int(a)
print(total)
'''
300x250
'개발일지 > Python' 카테고리의 다른 글
[복기] 파이썬 1부터 10까지의 약수를 각 수별로 리스트에 넣고, 딕셔너리에 넣기 (0) | 2022.05.12 |
---|---|
[복기] 파이썬 빈 딕셔너리에 과목 및 점수 입력 (키값, 벨류값 추가) 반복문으로 (0) | 2022.05.12 |
파이썬 튜플로감싸진 딕셔너리 안의 값을 구분 점수대로 변경해주는 코드 (0) | 2022.05.12 |
파이썬 합집합, 교집합 코드 (중복제거) (0) | 2022.05.12 |
파이썬 남은 목표학점 구하기 및 튜플 조작 (0) | 2022.05.12 |