Day15. 파이썬 중급문풀 (1~2)

Junghwan Park·2023년 4월 21일
0

스터디노트

목록 보기
16/54
post-thumbnail

[연습문제] 함수(01)

# 연습문제 함수(01)

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 = input('1.덧셈, 2. 뺄셈, 3. 곱셈, 4. 나눗셈, 5.나머지, 6.몫, 7.제곱승, 8.종료')
    if selectNum == 8:
        print('프로그램 종료.')
        break   # while문 종료

    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)

잘못 입력했습니다. 문구가 바로 나오는 오류 발생 중 수정 필요함!


[연습문제] 함수(02)

  • 다음과 같이 출력 될 수 있도록 이동거리와 이동시간을 반환하는 함수를 만들어보자.
# 연습문제 함수(02)

# 거리(km) = 속도(km/h) * 시간(h)

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

# 100:75 = 60:x -> x = 75 * 60 / 100
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)

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]}(h)분 ')
print('-' * 60)

[연습문제] 함수(03)

  • 다음과 같이 출력 될 수 있도록 비행기 티켓 영수증 출력 함수를 만들어 보자.
# 연습문제 함수(03)

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


def formatedNumber(n):  # 숫자 예쁘게
    return format(n, ',')
def printAirPlanereceipt(c1, c2, i1, i2, a1, a2):   # c1 child, i1 infant, a1 adult
    cp = c1 * childPrice
    cp_dc = int(c2 * childPrice * 0.5)  # 할인 계산
    print('=' * 60)
    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(a1)}원')
    print(f'성인 할인 대상  {a2}명 요금 : {formatedNumber(ap_dc)}원')

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


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

infanCnt = int(input('소아 입력 : '))
spcialDCInfantCnt = int(input('할인 대상 소아 입력 : '))

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

printAirPlanereceipt(childCnt, spcialDCChildCnt, infanCnt,
                     spcialDCInfantCnt, adultCnt, spcialDCAdultCnt)

[연습문제] 함수(04)

  • 다음과 같이 출력 될 수 있도록 재귀함수를 이용해서 팩토리얼 함수를 만들어보자.
def formatedNumber(n):
    return format(n, ',')
def recursionFun(n):

    if n == 1:
        return n

    return n * recursionFun(n-1)   # 자기 자신을 다시 호출하는 재귀 함수!

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

  • 다음과 같이 출력 될 수 있도록 단리/월복리 계산기 함수를 만들어보자.
def formatedNumber(n):
    return format(n, ',')

# 단리 (최초 원금에 대한 이율만 +)
def singleRateCalculator(m, t, r):   #단리 함수     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  # 년을 월로 바꿔주기 위해
    ratePerMonth = (r / 12) * 0.01

    totalMoney = m

    for i in range(t):
        totalMoney += totalMoney * ratePerMonth

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

[연습문제] 함수(05)

  • 다음과 같이 출력 될 수 있도록 등차 수열의 n번째 값과 합을 출력하는 함수를 만들어보자.
# 등차 수열 공식 : an = a1 + (n-1) * d
# 등차 수열 합 공식 : sn = n * (a1 + an) / 2

# 공식을 적용한 방법도 해볼 것 !

def sequenceCal(n1, d, n):  # n1 초항, d 공차, n 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)

[연습문제] 함수(06)

  • 다음과 같이 출력 될 수 있도록 등비 수열의 n번째 값과 합을 출력하는 함수를 만들어보자.
# 등비 수열(일반항) 공식 : an = a1 * r^(n1-1)
# 등비 수열(합) 공식 : sn = a1 * r^(n1-1) / (1-r)

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)

이 글은 제로베이스 데이터 취업 스쿨의 강의자료 일부를 발췌하여 작성되었습니다.

profile
안녕하세요 반갑습니다^^

0개의 댓글