Search

최솟값

정렬 알고리즘을 사용해서 최솟값을 구할 수 있다.
# 최솟값을 구하는 알고리즘 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
복사