Search

모듈 연습 문제

# 순열 계산 모듈을 만들고 순열 계산 결과를 출력해보자. import mymodule as md n = int(input('numN 입력: ')) r = int(input('numR 입력: ')) md.permutation(8,3)
Python
복사
# mymodule.py def permutation(n,r): if (n - r) < r: # 순열 계산하기 r = n - r result = 1 for i in range(r): result *= n-i print(f'n : {n-i}') print(f'{n}P{r}: {result}')
Python
복사
강사님 순열 코드
def permutation(n,r): result = 1 for i in range(n,(n-r),-1): result *= i print('n : {}'.format(i)) print(f'{n}P{r}: {result}')
Python
복사
# 과정의 로그를 확인하고 싶을 때,다음과 같이 쓰기도 한다. def permutation(n,r, logPrint=True): result = 1 for i in range(n,(n-r),-1): result *= i if logPrint=True: print('n : {}'.format(i)) print(f'{n}P{r}: {result}')
Python
복사
 순열을 계산해주는 패키지
from itertools import permutations
from itertools import permutations def permutation(ns,r): #이때 ns는 iterable 한 객체라고 하자. pList = list(permutations(ns,r)) # 만들어지는 값도 저장된다. print(f'{len(ns)}P{r} 개수 : {len(pList)}' for i in permutations(ns,r): print(n, end=', '))
Python
복사
# iterable 한 객체에서 임의의 숫자만큼 뽑는 개수 import permutation as pt listVar = [1,2,3,4,5,6,7,8] rVar = 3 pt.permutation(listvar,rVar)
Python
복사
# 조합 계산 모듈을 만들고 계산 결과를 출력해보자. import mymodule as md n = int(input('numN 입력: ')) p = int(input('numP 입력: ')) md.combination(8,3)
Python
복사
# mymodule.py def combination(n,p): dn = 1 mc = 1 for i in range(n,(n-p),-1): dn *= i print(f'resultP: {dn}') for j in range(p, 0,-1): mc *= j print(f'resultR: {mc}') result = int(dn / mc) print(f'resultC : {result}') print(f'{n}C{p}: {result}')
Python
복사
조합을 계산해주는 모듈
from itertools import combinations
# mymodule.py from itertools import combinations def getCombinations(ns,r): # ns개에서 r개를 순서와 상관없이 뽑는 경우의 수 c_list = list(cobinations(ns,r)) # c_list 는 모든 경우의 수다. print(f'{len(ns)}C{r} : {len(c_list)}')
Python
복사
# combinations(ns,r) 의 모든 경우의 수를 확인하고 싶다면 어차피 리스트 자료구조이니까 for n in combinations(ns,r): print(n, end= ', ')
Python
복사
ex) 수입과 공과금을 입력하면 공과금 총액과 수입 대비 공과금 비율을 계산해주는 모듈을 만들어보자.
# mymodule.py def pbFare(income,fare1,fare2,fare3): totFare = fare1 + fare2 + fare3 farePct = round((totFare / income) * 100,2) print(f'공과금 : {format(totFare, ',')}원') print(f'공과금 비율 : {farePct}%')
Python
복사
import mymodule as md income = float(input('수입 입력: ')) fare1 = float(input('수도요금 입력: ')) fare2 = float(input('전기요금 입력: ')) fare3 = float(input('가스요금 입력: ')) # 총 공과금 및 비율 계산 함수 적용하기 md.pbFare(income,fare1,fare2,fare3)
Python
복사
 강사님 풀이
# mymodule.py # 1. 사용할 전역 변수 초기화 income = 0 waterPrice = 0; electricPrice = 0; gasPrice = 0; # 변수의 값을 세팅하는 함수와 가져오는 함수를 만들어준 뒤 # main 에서 받은 입력값으로 전역변수 값을 변경해 함수를 사용하면 된다. def setIncome(ic): # setter 함수 global income # 전역 변수값을 가져와서 income = ic def getIncome(): # getter 함수 return income def setWaterPrice(wp): # setter 함수 global waterPrice # 전역 변수값을 가져와서 waterPrice = wp def getWaterPrice(): # getter 함수 return waterPrice def setElectricPrice(ep): # setter 함수 global eletricPrice # 전역 변수값을 가져와서 eletricPrice = ep def getElectricPrice(): # getter 함수 return eletricPrice def setGasPrice(gp): # setter 함수 global gasPrice # 전역 변수값을 가져와서 gasPrice = gp def getGasPrice(): # getter 함수 return gasPrice def getUtilityBill(): # 전체 공과금액을 계산해주는 함수 result = waterPrice + eletricPrice + gasPrice return result def getUtilityBillRate(): result = getUtilityBill() / getIncome() * 100 return result
Python
복사
import mymodule as md income = float(input('수입 입력: ')) water = float(input('수도요금 입력: ')) eletric = float(input('전기요금 입력: ')) gas = float(input('가스요금 입력: ')) md.setIncome(income) md.setWaterPrice(income) md.setElectricPrice(income) md.setGasPrice(income) print(f'공과금 : {getUtilityBill()}원') print(f'공과금 비율 : {getUtilityBillRate()}%')
Python
복사