정렬 알고리즘을 사용해서 최솟값을 구할 수 있다.
# 최솟값을 구하는 알고리즘
class MinAlgorithm:
def __init__(self,ns):
self.nums = ns
self.MinNum = 0
def getMinNum(self):
self.MinNum = self.nums[0] # 리스트의 맨 첫번째 값을 최솟값으로 초기화
for n in self.nums:
if self.MinNum > n:
self.MinNum = n
return self.MinNum
ma = MinAlgorithm([-2,-4,5,7,10,0,8,20,-11])
minNum = ma.getMinNum()
print(f'minNum : {minNum}')
Python
복사
# 파이썬의 내장 함수 'ord() : 문자값을 아스키 코드의 숫자값으로 변경해준다.' 를 사용하면 된다.
class MinAlgorithm:
def __init__(self,cs):
self.chars = cs
self.minChar = 0
def getMinChar(self):
self.minChar = self.chars[0] # 들어온 리스트의 맨 첫번째 값을 최댓값으로 일단 설정
for c in self.chars:
if ord(self.minChar) > ord(c):
self.minChar = c
return self.minChar
char = ['c','x','Q','A','e','P','p']
mc = MinAlgorithm(char)
minChar = mc.getMinChar()
print(f'minChar : {minChar}')
Python
복사
알파벳의 경우, 소문자보다 대문자가 더 작은 값을 갖는다.
# min.py
class getMinNum:
def __init__(self, ns):
self.nums = ns
self.MinNum = 0
self.MinCnt = 0
# 최솟값을 초기화할때는 나올 수 없는 더 큰값으로 설정해준다.
def setMinNum(self):
self.minNum = 51
for n in self.nums:
if self.minNum > n:
self.minNum = n
def getMinNum(self):
self.setMinNum()
return self.minNum
def setMinNumCnt(self):
self.setMinNum()
for n in self.nums:
if self.minNum == n:
self.MinCnt += 1
def getMinNumCnt(self):
self.setMinNumCnt()
return self.MinCnt
Python
복사
import random
import min
nums = []
for n in range(30):
nums.append(random.randint(1,50))
print(f'nums : {nums}')
ma = min.getMinNum(nums)
min_Num = ma.getMinNum()
print(f'min Num : {min_Num}')
min_NumCnt = ma.getMinNumCnt()
print(f'min Num cnt : {min_NumCnt}')
Python
복사
def getAvg(ns):
total = 0
for n in ns:
total += n
return round(total / len(ns),2)
# 주어진 리스트의 최솟값 또는 최댓값을 반환해주는 함수
def getMaxOrMin(ns, maxFlag =True):
resultN = ns[0]
for n in ns:
if maxFlag:
if n > resultN:
resultN = n
else:
if n < resultN:
resultN = n
return resultN
def Deviation(n1,n2):
return round(abs(n1 - n2),2)
Python
복사
import random
import min
scores = [100, 64, 94, 66, 75, 58, 99, 76, 96, 74,
54, 73, 88, 70, 68, 50, 95, 89, 69, 98]
print(f'scores : {scores}')
score_avg = min.getAvg(scores)
print(f'score avg: {score_avg}')
minScore = min.getMaxOrMin(scores, False)
print(f'min score : {minScore}')
dv = min.Deviation(score_avg,minScore)
print(f'deviation : {dv}')
Python
복사
위의 코드를 class 로 만들기
# min.py
class ScoreManagement:
def __init__(self,ss):
self.scores = ss
self.score_tot = 0
self.score_avg = 0
self.score_min = 0
self.score_max = 0
def getMinScore(self):
# self.scores 가 초기화가 안됐을 경우 오류가 발생하지 않도록 해주자
if self.scores == None or len(self.scores) == 0:
return None
self.score_min = self.scores[0]
for score in self.scores:
if self.score_min > score:
self.score_min = score
return self.score_min
def getMaxScore(self):
# self.scores 가 초기화가 안됐을 경우 오류가 발생하지 않도록 해주자
if self.scores == None or len(self.scores) == 0:
return None
self.score_max = self.scores[0]
for score in self.scores:
if self.score_max < score:
self.score_max = score
return self.score_max
def getTotScore(self):
# self.scores 가 초기화가 안됐을 경우 오류가 발생하지 않도록 해주자
if self.scores == None or len(self.scores) == 0:
return None
self.score_tot = 0
for score in self.scores:
self.score_tot += score
return self.score_tot
def getAvgScore(self):
# self.scores 가 초기화가 안됐을 경우 오류가 발생하지 않도록 해주자
if self.scores == None or len(self.scores) == 0:
return None
self.score_avg = round(self.getTotScore() / len(self.scores),2)
return self.score_avg
def getMaxDeviation(self):
return abs(self.getAvgScore() - self.getMaxScore(),2)
def getMinDeviation(self):
return abs(self.getAvgScore() - self.getMinScore(),2)
Python
복사
import random
import min
scores = [100, 64, 94, 66, 75, 58, 99, 76, 96, 74,
54, 73, 88, 70, 68, 50, 95, 89, 69, 98]
sm = min.ScoreManagement(scores)
min_score = sm.getMinScore()
max_score = sm.getMaxScore()
tot_score = sm.getTotScore()
avg_score = sm.getAvgScore()
dv_max = sm.getMaxDeviation()
dv_min = sm.getMinDeviation()
Python
복사