[제로베이스_데이터 취업 스쿨 16기] 8일차(6/14) - 모듈

jumee·2023년 6월 14일
0
post-thumbnail

중급 연습 문제

중급 문법들을 활용해 연습 문제들을 풀어본다.

모듈

1. 순열 계산 모듈을 만들고 순열 계산 결과를 출력해보자.

# permutation.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}')
import permutation as pt
n = int(input('numN 입력: '))
r = int(input('numR 입력: '))

pt.permutation(8,3)

🔻 강사님의 순열 코드

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}')

▶️ 로그 과정을 확인하고 싶을 때, logPrint=True 처럼 설정해 자유롭게 변경할 수 있다

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}')

📌 순열 계산 패키지

  • 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=',  '))
# iterable 한 객체에서 임의의 숫자만큼 뽑는 개수
import permutation as pt
listVar = [1,2,3,4,5,6,7,8]
rVar = 3

pt.permutation(listvar,rVar)

2. 조합 계산 모듈을 만들고 계산 결과를 출력해보자.


# combination.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}')
    
import combination as cb
n = int(input('numN 입력: '))
p = int(input('numP 입력: '))

cb.combination(8,3)

📌 조합 계산 패키지

  • from itertools import combinations
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)}')
# combinations(ns,r) 의 모든 경우의 수를 확인하고 싶다면 어차피 리스트 자료구조이니까
for n in combinations(ns,r):
	print(n, end= ', ')

3. 수입과 공과금을 입력하면 공과금 총액과 수입 대비 공과금 비율을 계산해주는 모듈을 만들자.

# 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}%')
import mymodule as md
income = float(input('수입 입력: '))
fare1 = float(input('수도요금 입력: '))
fare2 = float(input('전기요금 입력: '))
fare3 = float(input('가스요금 입력: '))

# 총 공과금 및 비율 계산 함수 적용하기
md.pbFare(income,fare1,fare2,fare3)

🔻 강사님 풀이

# 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
#########################################################
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()}%')
profile
공부한 내용들에 대해 끄적이는 공간입니다💎

0개의 댓글