Search

순위

import random nums = random.sample(range(50,101),20) ranks = [0]*20 # nums의 순위를 담을 리스트 초기화 for idx, num1 in enumerate(nums):# 기준이 될 num for num2 in nums: # 비교할 num if num1 < num2: # 기준이 되는 num이 작다면 ranks[idx] += 1 # 순서의 위치를 한칸씩 뒤로 미룬다. print(f'nums: {nums}') print(f'rank: {ranks}') # 보기 좋게 nums와 순위를 한꺼번에 출력하기 for i, num in enumerate(nums): print(f'num : {num}\t rank: {ranks[i]+1}') # 0순위보다 1순위가 보기 좋으니까
Python
복사
# 학생 20명의 중간고사와 기말고사 성적을 이용해서 각각의 순위를 구하고 중간고사 대비 기말고사 순위 변화(편차)를 출력하는 프로그램 import random midStuScores = random.sample(range(50,101),k=20) endStuScores = random.sample(range(50,101),k=20) print(midStuScores) print(endStuScores) mid_rank = [0]*20 end_rank = [0]*20 # 1. 중간고사 순위 for idx, mid in enumerate(midStuScores): for temp in midStuScores: if mid < temp: mid_rank[idx] += 1 # 2. 기말고사 순위 for idx, end in enumerate(endStuScores): for temp in endStuScores: if end < temp: end_rank[idx] += 1 print(mid_rank) print(end_rank) deviation = [0] * 20 # 기말고사와 중간고사 순위 편차 구하기 for i in range(20): # 0 ~ 19순위의 index 를 돌면서 deviation[i] = end_rank[i] - mid_rank[i] if deviation[i] < 0: deviation[i] = str(deviation[i]).replace('-','↓') elif deviation[i] > 0: deviation[i] = '↑' + str(deviation[i]) else: deviation[i] = '=' + str(deviation[i])
Python
복사
 class 사용해보기
# 학생 20명의 중간고사와 기말고사 성적을 이용해서 각각의 순위를 구하고 중간고사 대비 기말고사 순위 변화(편차)를 출력하는 프로그램 # rank.py class RankDeviation: def __init__(self, mss, ess): self.midStuScores = mss self.endStuScores = ess self.midRank = [0] * len(mss) self.endRank = [0] * len(mss) self.rankDeviation = [0] * len(mss) def setRank(self, ss, rs): # 점수가 담긴 리스트와 순위가 담긴 리스트를 가져온다. for idx, sco1 in enumerate(ss): for sco2 in ss: if sco1 < sco2: rs[idx] += 1 def setMidRank(self): self.setRank(self.midStuScores, self.midRank) def getMidRank(self): return self.midRank def setEndRank(self): self.setRank(self.endStuScores, self.endRank) def getEndRank(self): return self.endRank def printRankDeviation(self): for idx, mRank in enumerate(self.midRank): deviation = mRank - self.endRank[idx] if deviation > 0: # 기말고사 순위가 더 높다면 deviation = '↑' + str(abs(deviation)) elif deviation < 0: # 기말고사 순위가 더 낮다면 deviation = '↓' + str(abs(deviation)) else: deviation = '=' + str(abs(deviation)) print(f'mid_rank: {mRank}\t end_rank : {self.endRank[idx]}\t Deviation : {deviation} ')
Python
복사
import rank as rk import random midStuScores = random.sample(range(50,101), 20) endStuScores = random.sample(range(50,101), 20) rd = rk.RankDeviation(midStuScores, endStuScores) rd.setMidRank() # 중간고사 순위 설정 print(f'midStuScores : {midStuScores}') print(f'midStuRank : {rd.getMidRank()}') rd.setEndRank() # 기말고사 순위 설정 print(f'endStuScores : {endStuScores}') print(f'endStuRank : {rd.getEndRank()}') rd.printRankDeviation()
Python
복사
# rank.py def RankAlgo(ns): ranks = [0] * len(ns) # 순위 구하기 for idx, sco1 in enumerate(ns): for sco2 in ns: if sco1 < sco2: ranks[idx] += 1 print(f'nums : {ns}') print(f'ranks : {ranks}') # 순위에따라서 정렬 for i, n in enumerate(ns): print(f'num : {n} \t rank: {ranks[i] + 1}') sortedNums = [0] * len(ns) for idx , rank in enumerate(ranks): sortedNums[rank] = ns[idx] return sortedNums
Python
복사
# 숫자로 이루어진 리스트에서 사용자가 입력한 숫자를 검색하는 모듈을 만들자 # 검색 모듈을 이진 검색을 이용한다 # 검색 과정을 로그로 출력하자 # 검색에 성공하면 해당 정수의 인덱스를 출력하고 검색 결과가 없다면 -1을 출력하자. import rank import random nums = random.sample(range(50,101),20) sNums = rank.RankAlgo(nums) print(f'sorted Nums : {sNums}')
Python
복사
# rank.py def RankAsci(datas): ranks = [0] * len(datas) ascIIdatas = [] for data in datas: if str(data).isalpha(): # 문자로 바꿔주지 않으면 .isalpha는 오류 발생 ascIIdatas.append(ord(data)) else: ascIIdatas.append(data) print(f'ascIIdatas :{ascIIdatas}') # 중첩 for 문 이용해서 순위 구하기 for idx, data in enumerate(ascIIdatas): for data2 in ascIIdatas: if data < data2: # 작을수록 순위가 더해짐(밀려나는것) ranks[idx] += 1 print(f'ranks : {ranks}') for i, d in enumerate(datas): print(f'num : {d:>2} \t rank: {ranks[i] + 1}순위') # 오른쪽 2자리수만큼 정렬
Python
복사
# 알파벳과 숫자로 이루어진 리스트를 순위 알고리즘을 이용해서 정렬하자. # 알파벳은 아스키 코드를 이용한다. import rank datas = [32,'a','z',45,'G',39,50,'T','t',22,31,55,'s',63,59,'E'] rank_datas = rank.RankAsci(datas)
Python
복사
 .isalpha()
.isalpha() : 입력값으로 들어온 문자가 알파벳으로만 이루어져 있으면 True, 아닐 경우 False
 오른쪽 정렬
format 함수에서 오른쪽 정렬을 표현 하고 싶을 경우 :> 라는 기호를 뒤에 붙여주면 된다.
이때 전체 자리수까지 표현할 수 있다.