🔍 문제
- 70~100점 사이의 20명을 순서대로 출력하는 프로그램 생성
- 점수는 5점 단위 난수로 출력
- '+'로 분포를 시각화
🗝 사용함수
index, num in enumerate(array) : array 안의 인덱스와 데이터를 출력
🖥 실행
1) 모듈
class maxScore:
def __init__(self, arr):
self.arr = arr
self.max = 0
self.maxIdx = 0
def setMax(self):
self.max = self.arr[0]
self.maxIdx = 0
for i, n in enumerate(self.arr):
if self.max < n:
self.max = n
self.maxIdx = i
def getMax(self):
return self.max
def getMaxIdx(self):
return self.maxIdx
2) 실행파일
import maxAl as ma
import random as rd
scores = []
for i in range(20):
rs = rd.randint(71, 100)
if rs != 100: rs = rs - (rs%5) #5단위로 떨어지게 함
scores.append(rs)
print(f'scores : {scores}')
scMx = ma.maxScore(scores)
scMx.setMax()
result = scMx.getMax()
arIdx = [0 for i in range(result+1)]
for i in scores:
arIdx[i] += 1
n = 1
while True:
mxAl = ma.maxScore(arIdx)
mxAl.setMax()
rsMax = mxAl.getMax() #최빈값의 빈도
rsMaxIdx = mxAl.getMaxIdx() #최빈값
if rsMax == 0:
break
print(f'{n}. {rsMaxIdx}의 빈도수 : {rsMax}\t', end='')
print('+'*rsMax)
arIdx[rsMaxIdx] = 0 #최빈값의 빈도수를 0으로 만듦
n += 1
📝 결과물
scores : [70, 80, 80, 95, 75, 80, 70, 95, 70, 85, 75, 100, 85, 95, 100, 75, 70, 70, 100, 70]
1. 70의 빈도수 : 6 ++++++
2. 75의 빈도수 : 3 +++
3. 80의 빈도수 : 3 +++
4. 95의 빈도수 : 3 +++
5. 100의 빈도수 : 3 +++
6. 85의 빈도수 : 2 ++
'Coding test > Python 기초문제' 카테고리의 다른 글
[정렬] 1부터 100사이 난수 정렬(병합 정렬) (0) | 2022.05.16 |
---|---|
[근사값] 학점 출력기 (0) | 2022.05.13 |
[파이썬 기초] 아스키 코드 최대값 찾기 (0) | 2022.05.13 |
[정렬] 1부터 100사이 난수 정렬(선택 정렬) (0) | 2022.05.12 |
[정렬] 1부터 100사이 난수 정렬(삽입 정렬) (0) | 2022.05.12 |