최댓값
자료구조에서 가장 큰값 찾기
class MaxAlgorithm:
def __init__(self,ns):
self.nums = ns
self.maxNum = 0
def getMaxNum(self):
self.maxNum = self.nums[0]
for n in self.nums:
if self.maxNum < n:
self.maxNum = n
return self.maxNum
ma = MaxAlgorithm([-2,-4,5,7,10,0,8,20,-11])
maxNum = ma.getMaxNum()
print(maxNum)
아스키 코드가 가장 큰값 찾기
class MaxAlgorithm:
def __init__(self,cs):
self.chars = cs
self.maxChar = 0
def getMaxChar(self):
self.maxChar = self.chars[0]
for c in self.chars:
if ord(self.maxChar) < ord(c):
self.maxChar = c
return self.maxChar
chars = ['c','x','Q','A','e','P','p']
mc = MaxAlgorithm(chars)
maxChar= mc.getMaxChar()
print(f'maxChar:{maxChar}')
최솟값
최댓값과 동일한 알고리즘
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
mi = MinAlgorithm([-2,-4,5,7,10,0,8,20,-11])
minNum = mi.getMinNum()
print(minNum)
아스키 코드가 가장 작은값 찾기
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
chars = ['c','x','Q','A','e','P','p']
mc = MinAlgorithm(chars)
minChar= mc.getMinChar()
print(f'minChar:{minChar}')
최빈값
데이터에서 빈도수가 가장 많은값
최댓값을 먼저 알아야함(indexes를 활용하기 위함)
class MaxAlgorithm:
def __init__(self,ns):
self.nums = ns
self.maxNum = 0
self.maxNumIdx = 0
def setMaxIdxAndNum(self):
self.maxNum = self.nums[0]
self.maxNumIdx = 0
for i, n in enumerate(self.nums):
if self.maxNum < n:
self.maxNum = n
self.maxNumIdx = i
def getMaxNum(self):
return self.maxNum
def getMaxNumIdx(self):
return self.maxNumIdx
-----------------최댓값 클래스---------------
nums = [1,3,7,6,7,7,7,12,12,17]
maxAlo = MaxAlgorithm(nums)
maxAlo.setMaxIdxAndNum()
maxNum = maxAlo.getMaxNum()
print(f'maxNum : {maxNum}') #최댓값 구하기
indexes = [0 for i in range(maxNum+1)] #인덱스는 0 부터 시작이니까 +1 해줌
print(indexes)
for n in nums:
indexes[n] = indexes[n]+1
print(indexes)
maxAlo = MaxAlgorithm(indexes) #인덱스에서 다시 최댓값 구하기
maxAlo.setMaxIdxAndNum()
maxNum = maxAlo.getMaxNum()
maxNumIdx = maxAlo.getMaxNumIdx()
print(f'maxNum : {maxNum}')
print(f'maxNumIdx : {maxNumIdx}')
print(f'즉, {maxNumIdx}의 빈도수가 {maxNum}로 가장 높다')
최댓값 클래스 위와 동일
실행
import random
import tempscore as ts
scores=[]
for i in range(100):
rn = random.randint(71,100)
if rn != 100: rn= rn-(rn%5)
scores.append(rn)
print(scores)
print(len(scores))
#최댓값
maxAlo = ts.MaxAlgorithm(scores)
maxAlo.setMaxIdxAndNum()
maxNum = maxAlo.getMaxNum()
print((maxNum))
#인덱스 리스트 생성
indexes = [0 for i in range(maxNum+1)]
print(f'indexes: {indexes}')
print(f'indexes length : {len(indexes)}')
#인덱스 리스트에 빈도 저장
for n in scores:
indexes[n] = indexes[n]+1
print(indexes)
n=1
while True:
maxAlo = ts.MaxAlgorithm(indexes)
maxAlo.setMaxIdxAndNum()
maxNum = maxAlo.getMaxNum()
maxNumIdx = maxAlo.getMaxNumIdx()
print(f'maxNum : {maxNum}')
print(f'maxNumIdx : {maxNumIdx}')
if maxNum ==0:
break
print(f'{n}.{maxNumIdx}빈도수 : {maxNum} \t', end='')
print('+'*maxNum)
indexes[maxNumIdx]=0
n+=1
근삿값
특정 값(참값) 에 가까운 값
import random
nums = random.sample(range(0,50),20)
print(nums)
inputNum = int(input('input number: '))
print(f'inputNum : {inputNum}')
nearNum = 0 #찾을 값
maxNum = 50
for n in nums:
absNum= abs(n-inputNum) #절댓값 구하기
#print(f'absNum : {absNum}')
if absNum < maxNum:
minNum = absNum
nearNum = n
print(f'nearnum: {nearNum}')
점수 근삿값으로 학점 출력
근삿값 함수
def getNearNum(an):
bascores = [95,85,75,65,55]
nearNum = 0
minNum = 100
for n in bascores:
absNum = abs(n -an)
if absNum < minNum:
minNum = absNum
nearNum = n
if nearNum == 95:
return 'A'
elif nearNum ==85:
return 'B'
elif nearNum ==75:
return 'C'
elif nearNum ==65:
return 'D'
elif nearNum <=55:
return 'F'
함수사용 출력
import near
scores = []
kor = int(input('input kor score: '))
scores.append(kor)
eng = int(input('input eng score: '))
scores.append(eng)
mat = int(input('input mat score: '))
scores.append(mat)
sci = int(input('input sci score: '))
scores.append(sci)
his = int(input('input his score: '))
scores.append(his)
totalScore = sum(scores)
avgScore = totalScore/len(scores)
print(f'totalScore : {totalScore}')
print(f'avgScore : {avgScore}')
grade = near.getNearNum(avgScore)
print(f'grade : {grade}')
평균
중간값 구하기
import random
nums = random.sample(range(0,100),10)
print(f'nums: {nums}')
total = 0
for n in nums:
total += n
average = total / len(nums)
print(f'average: {average}')
일부의 평균만 구하기
import random
nums = random.sample(range(0,100),10)
print(f'nums: {nums}')
total = 0
targetNums = []
for n in nums:
if n>=50 and n <=90:
total+=n
targetNums.append(n)
average = total /len(targetNums)
print(targetNums)
print(round(average,2))
정수들의 평균만 구하기
nums = [4,5.12,0,5,7.34,9.1,9,3,3.159,1,11,12.789]
print(nums)
targetNums = []
total = 0
for n in nums:
if n - int(n) == 0:
total +=n
targetNums.append(n)
average = total/len(targetNums)
print(targetNums)
print(round(average,2))