파이썬(33~37)
함수를 이용한 프로그래밍
재귀함수를 이용해서 팩토리얼 함수를 만들자.
ex)
def recursionFun(n):
if n == 1:
return n
return n * recursionFun(n-1)
inputNumber = int(input('input number : '))
print(format(recursionFun(inputNumber), ','))
출력값 :
input number : 4
24
ex) 단리/월 복리 함수
def singleRateCalculator(m, t, r):
totalMoney = 0
toralRateMoney = 0
for i in range(t):
toralRateMoney += m * (r * 0.01)
totalMoney = m + toralRateMoney
return int(totalMoney)
def multiRateCalculator(m, t, r):
t = t * 12
rpm = (r / 12) * 0.01
totalMoney = m
for i in range(t):
totalMoney += totalMoney * rpm
return int(totalMoney)
money = int(input('예치금(원) : '))
term = int(input('기간(년) : '))
rate = int(input('연 이율(%) : '))
print('[단리 계산기]')
print(f'{term}년 후 총 수령액 : {singleRateCalculator(money, term, rate)}')
print('[복리 계산기]')
print(f'{term}년 후 총 수령액 : {multiRateCalculator(money, term, rate)}')
#등차 수열 공식 : an = a1 +(n-1) x d
#등차 수열 합 공식 : sn = n x (a1 + an) / 2
ex) 등차수열
def sequenceCal(n1, d, n):
valueN = 0; sumN = 0;
i = 1
while i <= n:
if i ==1:
valueN = n1
sumN += valueN
print(f'{i}번째 항의 값 : {valueN}')
print(f'{i}번째 항까지의 값 : {sumN}')
i += 1
continue
valueN += d
sumN += valueN
print(f'{i}번째 항의 값 : {valueN}')
print(f'{i}번째 항까지의 값 : {sumN}')
i += 1
inputN1 = int(input('a1 입력 : '))
inputD = int(input('공차 입력 : '))
inputN = int(input('n 입력 : '))
sequenceCal(inputN1, inputD, inputN)
등비수열.
ex)등비수열의 값
def sequenceCal(n1, r, n):
valueN = 0; sumN = 0
i = 1
while i <= n:
if i == 1:
valueN = n1
sumN = valueN
print(f'{i}번쨰 항의 값 : {valueN}')
print(f'{i}번쨰 항까지의 합 : {sumN}')
i += 1
continue
valueN *= r
sumN += valueN
print(f'{i}번쨰 항의 값 : {valueN}')
print(f'{i}번쨰 항까지의 합 : {sumN}')
i += 1
inputN1 = int(input('a1 의 값 : '))
inputR = int(input('공비 의 값 : '))
inputN = int(input('n 의 값 : '))
sequenceCal(inputN1, inputR, inputN)
상품 구매 개수에 따라 할인율이 결정되는 모듈 만들고 다음과 같이 계산 결과가 출력되는 프로그램을 만들자.
ex)
def calculatorTotalPrice(gs):
if len(gs) <= 0:
print('구매 상품이 없습니다')
return
rate = 25
totalPrice = 0
rates = {1:5, 2:10, 3:15, 4:20}
if len(gs) in rates:
rate = rates[len(gs)]
for g in gs:
totalPrice += g * (1- rate * 0.01)
return [rate, int(totalPrice)]
.........................................
import discount as dc
if name == 'main':
fLag = True
gs = []
while fLag:
selectNumber = int(input('1. 구매, 2. 종료'))
if selectNumber == 1:
goods_price = int(input('상품 가격 입력 '))
gs.append(goods_price)
elif selectNumber == 2:
result = dc.calculatorTotalPrice(gs)
fLag = False
print(f'할인율 : {result[0]}%')
print(f'합계 : {format(result[1], ',')}원')
순열함수 8p3 : 8 x 7 x 6 = 336
ex) 순열함수 프로그램 모듈만들기
def getPermutationCnt(n, r):
result = 1
for n in range(n, (n-r), -1):
print('n : {}'.format(n))
result = result * n
return result
...............................................
import permutation as pt
numN = int(input('numN 입력 : '))
numR = int(input('numR 입력 : '))
print(f'{numN}P{numR} : {pt.getPermutationCnt(numN, numR)}')
출력값 :
numN 입력 : 5
numR 입력 : 3
n : 5
n : 4
n : 3
5P3 : 60