다음과 같이 출력 될 수 있도록 단리/월복리 계산기 함수를 만들어보자
def formatedNumber(n):
return format(n, ',')
# 단리
def singleRateCalculator(m, t, r):
totalMoney = 0
totalRateMoney = 0
for i in range(t):
totalRateMoney += m * (r * 0.01)
totalMoney = m + totalRateMoney
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('=' * 30)
print(f'예치금: {money}원')
print(f'예치기간: {term}년')
print(f'연 이율: {rate}%')
print('-' * 30)
print(f'5년 후 총 수령액: {formatedNumber(singleRateCalculator(money, term, rate))}')
print('=' * 30)
print('[복리 계산기]')
print('=' * 30)
print(f'예치금: {money}원')
print(f'예치기간: {term}년')
print(f'연 이율: {rate}%')
print('-' * 30)
print(f'5년 후 총 수령액: {formatedNumber(multiRateCalculator(money, term, rate))}')
print('=' * 30)
등차 수열의 n번째 값과 합을 출력하는 함수를 만들어보자.
def sequenceCal(n1, d, n):
valueN, sumN = 0, 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)
상품 구매 개수에 따라 할인율이 결정되는 모듈을 만들고, 다음과 같이 계산 결과가 출력되는 프로그램을 만들어보자.
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)]
def formatedNumber(n):
return format(n, ',')
import discount as dc
if __name__ == '__main__':
flag = True
gs = []
while flag:
selectNumber = int(input('1.구매, 2.종료'))
if selectNumber == 1:
product_price = int(input('상품 가격 입력: '))
gs.append(product_price)
elif selectNumber == 2:
result = dc.calculatorTotalPrice(gs)
flag = False
print(f'할인율: {result[0]}%')
print(f'합계: {dc.formatedNumber(result[1])}원')
로또 모듈을 만들고 로또 결과가 출력될 수 있도록 프로그램을 만들어보자.
import random
lottoNums, choseNums, sameNums = [], [], []
bonusNum = 0
def setUserNums(ns):
global choseNums # 값을 수정하기위해 global 사용
choseNums = ns
def getUserNums(): # 사용자가 입력한 것을 가져오는 함수 - 모듈이기 때문
return choseNums
def setRandNums():
global lottoNums
lottoNums = random.sample(range(1, 46), 6)
def getRandNums():
return lottoNums
def setBonusNum():
global bonusNum
while True:
bonusNum = random.randint(1, 45)
if bonusNum not in lottoNums:
break
def getBonusNum():
return bonusNum
def lottoResult():
global choseNums
global lottoNums
global sameNums
sameNums = []
for un in choseNums:
if un in lottoNums:
sameNums.append(un)
if len(sameNums) == 6:
print('1등 당첨!!')
print(f'번호: {sameNums}')
elif len(sameNums) == 5 and bonusNum in choseNums:
print('2등 당첨!!')
print(f'번호: {sameNums}, 보너스 번호: {bonusNum}')
elif len(sameNums) == 5:
print('3등 당첨!!')
print(f'번호: {sameNums}')
elif len(sameNums) == 4:
print('4등 당첨!!')
print(f'번호: {sameNums}')
elif len(sameNums) == 3:
print('5등 당첨!!')
print(f'번호: {sameNums}')
else:
print('아쉽습니다. 다음 기회에~')
print(f'기계 번호: {lottoNums}')
print(f'보너스 번호: {bonusNum}')
print(f'선택 번호: {choseNums}')
print(f'일치 번호: {sameNums}')
def startLotto():
selectNums = []
for i in range(6):
selectNums.append(int(input('번호(1~45) 입력: ')))
setUserNums(selectNums)
setRandNums()
setBonusNum()
lottoResult()
import lotto as lt
lt.startLotto()
getUserNums
, getRandNums
, getBonusNum
함수를 구현했는데 왜 사용하지 않고 변수로 바로 접근하신 거지....?
내가 모르는 무언가가 있는 걸까 그냥 사용하시는 걸 잊으신 걸까????!!!!
"이 글은 제로베이스 데이터 취업 스쿨 강의 자료 일부를 발췌한 내용이 포함되어 있습니다."