[Python] 영수증 출력 / 재귀 함수 / 단리 및 월복리 계산기 / 산술연산

이소티·2023년 5월 2일

python

목록 보기
12/33

함수를 이용한 프로그래밍


# 비행기 티켓 영수증 출력 함수



childPrice = 18000
infantPrice = 25000
adultPrice = 50000
specialDC = 50



def formatedNumber(n) :
    return(format(n,','))
    
    

def printAriPlaneReceipt(c1,c2,i1,i2,a1,a2) :

    print('='*50)

    cp = c1 * childPrice
    cp_dc = int(c2 * childPrice * 0.5)

    print(f'유아 {c1}명 요금 : {formatedNumber(cp)}원')
    print(f'유아 할인 대상 {c2}명 요금 : {formatedNumber(cp_dc)}원')



    ip = i1 * infantPrice
    ip_dc = int(i2 * infantPrice * 0.5)

    print(f'소아 {i1}명 요금 : {formatedNumber(ip)}원')
    print(f'소아 할인 대상 {i2}명 요금 : {formatedNumber(ip_dc)}원')



    ap = a1 * adultPrice
    ap_dc = int(a2 * adultPrice * 0.5)


    print(f'성인 {a1}명 요금 : {formatedNumber(ap)}원')
    print(f'성인 할인 대상 {a2}명 요금 : {formatedNumber(ap_dc)}원')


    print('='*50)


    print(f'Total : {formatedNumber(c1 + c2 + i1 + i2 + a1 + a2)}명')
    print(f'TotalPrice : {formatedNumber(cp + cp_dc + ip + ip_dc + ap + ap_dc)}원')


    print('='*50)





print(f'childPrice(24개월 미만)\t\t: {formatedNumber(childPrice)}원')
print(f'infantPrice(만12세 미만)\t\t: {formatedNumber(infantPrice)}원')
print(f'adultPrice(만12세 이후)\t\t: {formatedNumber(adultPrice)}원')
print(f'국가 유공자 및 장애우 할인\t\t: {specialDC}%')
print()




childCnt = int(input('유아 입력: '))
specialDCChildCnt = int(input(f'할인대상 유아 입력: '))

infantCnt = int(input('소아 입력: '))
specialDCInfantCnt = int(input(f'할인대상 소아 입력: '))

adultCnt = int(input('성인 입력: '))
specialDCAdultCnt = int(input(f'할인대상 성인 입력: '))



printAriPlaneReceipt(childCnt, specialDCChildCnt,
                infantCnt, specialDCInfantCnt,
                adultCnt, specialDCAdultCnt)



# 재귀함수를 이용하여 팩토리얼 함수 작성


def formatedNumber(n) :
    return format(n,',')


def recursionFun(n) :

    if n == 1 :
        return n
    
    return n * recursionFun(n-1)



inputNumber = int(input('input number : '))
inputNumberFormated = formatedNumber(recursionFun(inputNumber))
print(inputNumberFormated)



# 단리 계산기 함수


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('[단리 계산기]')
print('=' * 30)
print(f'예치금\t: {formatedNumber(money)}원')
print(f'예치기간\t: {term}년')
print(f'연 이율\t: {rate}%')
print('-' * 30)
amount = formatedNumber(singleRateCalculator(money, term, rate))
print(f'{term}년 후 총 수령액: {amount}원')
print('=' * 30)


print()
print('[월복리 계산기]')
print('=' * 30)
print(f'예치금\t: {formatedNumber(money)}원')
print(f'예치기간\t: {term}년')
print(f'연 이율\t: {rate}%')
print('-' * 30)
amount = formatedNumber(multiRateCalculator(money, term, rate))
print(f'{term}년 후 총 수령액: {amount}원')
print('=' * 30)



# 산술연산 계산기
# 잘못된 것

  
  
user_mode = int(input('1.덧셈 \t2.뺄셈 \t3.곱셈 \t4.나눗셈 \t5.나머지 \t6.몫 7.제곱승\t 8.종료'))
user_number1 = float(input('첫 번째 숫자 입력 : '))
user_number2 = float(input('두 번째 숫자 입력 : '))

  

def Calculator_add(num1,num2) :
    result = num1 + num2
    print('{} + {} = {%.2f}' % (num1,num2,num1+num2))

def Calculator_min(num1,num2) :
    result = num1 - num2
    print('{} - {} = {%.2f}' % (num1,num2,num1-num2))

def Calculator_mul(num1,num2) :
    result = num1 * num2
    print(f'{num1} * {num2} = {num1*num2}')

def Calculator_div(num1,num2) :
    result = num1 / num2
    print(f'{num1} / {num2} = {num1/num2}')

def Calculator_rest(num1,num2) :
    result = num1 % num2
    print(f'{num1} % {num2} = {num1%num2}')

def Calculator_mod(num1,num2) :
    result = num1 // num2
    print(f'{num1} // {num2} = {num1//num2}')

def Calculator_squ(num1,num2) :
    result = num1 ** num2
    print(f'{num1} ** {num2} = {num1**num2}')

  
  

flag = True
while flag :
  

    if user_mode == 1 :
        Calculator_add(user_number1,user_number2)
    
    elif user_mode == 2:
        Calculator_min(user_number1,user_number2)

    elif user_mode == 3:
        Calculator_mul(user_number1,user_number2)

    elif user_mode == 4:
        Calculator_div(user_number1,user_number2)

    elif user_mode == 5:
        Calculator_rest(user_number1,user_number2)
    
    elif user_mode == 6:
        Calculator_mod(user_number1,user_number2)

    elif user_mode == 7:
        Calculator_squ(user_number1,user_number2)
    
    elif user_mode == 8:
        print('Bye ~')
        flag = False



# 산술연산 계산기
# 맞는 코드

  
  
def add(n1, n2):
    return n1 + n2

def sub(n1, n2):
    return n1 - n2

def mul(n1, n2):
    return n1 * n2

def div(n1, n2):
    return n1 / n2

def mod(n1, n2):
    return n1 % n2

def flo(n1, n2):
    return n1 // n2

def exp(n1, n2):
    return n1 ** n2


  
  
while True :

    print('-' * 60)

    selectNum = int(input('1.덧셈, 2.뺄셈, 3.곱셈, 4.나눗셈, 5.나머지, 6.몫, 7.제곱승, 8.종료 '))
    
  
  
    if selectNum == 8:
        print('Bye~')
        break

  
    num1 = float(input('첫 번째 숫자 입력: '))
    num2 = float(input('두 번째 숫자 입력: '))

  
  
    if selectNum == 1:
        print(f'{num1} + {num2} = {add(num1, num2)}')

    elif selectNum == 2:
        print(f'{num1} - {num2} = {sub(num1, num2)}')

    elif selectNum == 3:
        print(f'{num1} * {num2} = {mul(num1, num2)}')

    elif selectNum == 4:
        print(f'{num1} / {num2} = {div(num1, num2)}')

    elif selectNum == 5:
        print(f'{num1} % {num2} = {mod(num1, num2)}')

    elif selectNum == 6:
        print(f'{num1} // {num2} = {flo(num1, num2)}')

    elif selectNum == 7:
        print(f'{num1} ** {num2} = {exp(num1, num2)}')

    else:
        print('잘못 입력했습니다. 다시 입력하세요.')

    print('-' * 60)
profile
데이터 관련 학습 일지

0개의 댓글