# 순열 계산 모듈을 만들고 순열 계산 결과를 출력해보자.
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
복사