[파이썬] 중급 문제풀이

greta·2023년 5월 11일
0

1. 함수 - 산술연산 계산기

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('잘못 입력하셨습니다.')

2. 함수 - 이동거리, 이동시간 반환

def getDistance(speed, hour, minute):
    distance = speed * (hour + minute/60)
    return distance

def getTime(speed, distance):
    time = distance / speed
    print(f'time: {time}')
    h = int(time)
    m = int(( time - h ) * 100 * 60 / 100)
    return [h,m]

print('-'*60)
s = float(input('속도(km/h) 입력: '))
h = float(input('시간(h) 입력: '))
m = float(input('시간(m) 입력: '))
d = getDistance(s,h,m)
print(f'{s}(km/h)속도로 {h}(h)시간 {m}(m)분 동안 이동한 거리: {d}(km)')

print('-'*60)
s = float(input('속도(km/h) 입력: '))
d = float(input('거리(km) 입력: '))
t = getTime(s,d)
print(f'{s}(km/h)속도로 {d}(km)거리 이동한 시간: {t[0]}(h)시간 {t[1]}(m)분')

3. 함수 - 비행기 영수증 티켓 출력

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

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

def printAirPlaneReceipt(c1,c2,i1,i2,a1,a2):
    print('=' * 30)

    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('='*30)
    print(f'Total: {c1 + c2 + i1 + i2 + a1 + a2}명')
    print(f'TotalPrice: {formatedNumber(cp + cp_dc + ip + ip_dc + ap + ap_dc)}원')
    print('=' * 30)
    
childCnt = int(input('유아 입력: '))
specialDCChildCnt = int(input('할인 대상 유아 입력: '))

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

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

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

4. 함수 - 재귀함수, 팩토리얼 함수 만들기

def recursionFun(n):

    if n == 1:
        return n

    return n * recursionFun(n-1)

inputNumber = int(input('input number: '))
print(format(recursionFun(inputNumber), ','))

5. 함수 - 단리/월복리 이자 계산기

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

#단리
def singleRateCalculator(m,t,r):

    totalMoney = m
    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(f'{term}년 후 총 수령액: {formatedNumber(singleRateCalculator(money, term, rate))}')

print('[월복리 계산기]')
print(f'{term}년 후 총 수령액: {formatedNumber(multiRateCalculator(money, term, rate))}')

6. 함수 - 등차수열 n번째 항과 합

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)

  1. 함수 - 등비수열 n번째 항의 값과 합
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)

🎅오늘의 한마디

문제풀이하며 실제로 아, 이렇게 쓰는 구나! 하며 재미를 느꼈다.
다음 문제풀이도 기대된다.

0개의 댓글