Python_함수_문제풀이

jaam._.mini·2023년 11월 8일
0

📒Python 기초 수학

목록 보기
8/46

오늘은 6가지 함수 문제를 풀어보고자 한다.

오늘의 목표는!
해답 풀이를 보기 전, 내가 먼저 직접 코드 짜보기!

언제쯤 문제만 보고 혼자 척척! error 없이 코드를 짤 수 있게 될까..?


함수 예제(1)

Q.다음과 같이 출력될 수 있도록 산술연산 계산기를 함수를 이용해 만들기

❗놓친 부분

(1) selectNum = int(input('1.덧셈, ~
   → int()캐스팅
   → 캐스팅 하지 않으면 '종료'가 print되지 않음
   
(2) while True:
   → 필요했던 것 자체를 놓침
   
(3) if selectNum == 8:
      print('종료')
      break
   → while True: 에서 해결해야 하는 것 자체를 놓침

📝풀이

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

Q.이동거리 반환 함수

❗놓친 부분

(1) def 구문 자체
(2) return distance
(3) d = carDistanc(s, h, m)

📝풀이

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

print('-' * 45)
s = float(input('속도 : '))
h = float(input('시간 : '))
m = float(input('분 : '))
d = carDistanc(s, h, m)
print(f'{s}속도로 {h}시 {m}분 동안 이동한 거리{d}')
print('-' * 45)


함수 예제(2-2)

Q.이동시간 반환 함수

📌자료 구조형 list [ ]

리스트란?

  • 파이썬 자료구조 형태 중 하나
  • 순서가 있는 수정가능한 객체의 집합
  • 대괄호로 작성되어지며, 리스트 내부의 값은 콤마로 구분
  • 추가, 수정, 삭제 가능
참고: https://blog.naver.com/shine11266/222462212007

❗놓친 부분

(1) m = int((time-h)  *100  * 60 /100)
(2) return [h, m]
(3) {t[0]}시간 {t[1]}분

📝풀이

def getTime(speed, distance):
    time = distance / speed
    print(f'time ; {time}')
    h = int(time)
    m = int((time-h)  *100  * 60 /100)
       # 0.00 분 이니까 *100
       # 100:위에서 출력된 time= 60:x -> x = time * 60 / 100

    return [h, m]
    #반환

print('-' * 45)
s = float(input('속도 : '))
d = float(input('거리 : '))
t = getTime(s, d)
print(f'{s}속도로 {d} 거리를 이동 시간 : {t[0]}시간 {t[1]}분')
  # t[0], t[1] = return [h, m] 를받는 것
print('-' * 45)


함수 예제(3)

Q.영수증 출력 함수

[비용]
24개월 미만 : 1.8
12세 미만 : 2.5
12세 이후 : 5.0
유공자/장애우 : 50% DC
[승객 분류]
유아, 할인대상 유아, 소아, 할인대상 소아, 성인, 할인대상 성인

❗놓친 부분

(1) def formatedNumber(n):
    return format(n, ',')
    
    print(f'유아 {c1}명 요금 : {formatedNumber(cp)}원')
    → formatedNumber(n)를 설정해주면 [12,500원]과 같이 결과가 입력 됨
(2) airplaneBill(childCnt, childDcCnt, infanCnt, infanDcCnt,
             adultCnt, adultDcCnt)
    → 마지막에 [출력]을 위해 입력 필요

📝풀이

childPrice = 18000
infanPrice = 25000
adultPrice = 50000
specialDiscount = 50 #%는 입력하면 erro남

def formatedNumber(n):
    return format(n, ',')
def airplaneBill(c1, c2, i1, i2, a1, a2):
    cp = c1 * childPrice
    cp_cd = int(c2 * childPrice * 0.5)
    print('=' * 40)
    print(f'유아 {c1}명 요금 : {formatedNumber(cp)}원')
    print(f'유아 할인 대상 {c2}명 요금 : {formatedNumber(cp_cd)}원')

    ip = i1 * infanPrice
    ip_cd = int(i2 * infanPrice * 0.5)
    print(f'소아 {i1}명 요금 : {formatedNumber(ip)}원')
    print(f'소아 할인 대상 {i2}명 요금 : {formatedNumber(ip_cd)}원')

    ap = a1 * adultPrice
    ap_cd = int(a2 * adultPrice * 0.5)
    print(f'성인 {a1}명 요금 : {formatedNumber(ap)}원')
    print(f'성인 할인 대상 {a2}명 요금 : {formatedNumber(ap_cd)}원')
    print('=' * 40)
    print(f'total : {c1+c2+i1+i2+a1+a2}명')
    print(f'TotalPrice : {formatedNumber(cp+cp_cd+ip+ip_cd+ap+ap_cd)}원')
    print('=' * 40)

childCnt = int(input('유아 입력 : '))
childDcCnt = int(input('유아 할인 입력 : '))
infanCnt = int(input('소아 입력 : '))
infanDcCnt = int(input('소아 할인 입력 : '))
adultCnt = int(input('성인 입력 : '))
adultDcCnt = int(input('성인 할인 입력 : '))


airplaneBill(childCnt, childDcCnt, infanCnt, infanDcCnt,
             adultCnt, adultDcCnt)


함수 예제(4)

Q.재귀함수를 이용해 팩토리얼 함수 만들기

📌재귀함수_recursionFun(n)

📍재귀함수 공식
def factorail(n):
if n == 1:
return n
return n * factorail(n-1)

  • if문이 없으면 종료되지 않음
  • if 문안에 return 문이 존재해야 return 값이 호출되며 재귀 함수가 끝이 난다
ex) input number : 5, 120만들기

def factorial(n):
    if n == 1:
        return n

    return n * factorial(n-1)

inputNumber = int(input('inputnumber : '))
print(format(factorial(inputNumber), ','))

❗놓친 부분

📝풀이


함수 예제(5)

Q.공차 함수

❗놓친 부분

등차 공식 공부가 필요 함

📝풀이

def sequenceCal(n1, d, n):
    valueN = 0; sumN = 0; # sumN : N항까지의 합의 값

    i = 1 #while문 사용을 위해 변수 하나 입력
    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 # 무한반복에 빠지지 않기 위해!

# 이제는 초항,공차, n을 입력 받아야 함
inputN1 = int(input('a1 입력 : '))
inputD = int(input('d공차 입력 : '))
inputN = int(input('n 입력 : '))

sequenceCal(inputN1, inputD, inputN)


함수 예제(6)

Q.공비 함수

❗놓친 부분

공비 공식 공부가 필요 함

📝풀이

def sequenceCal(n1, r, n):
    valueN = 0; sumN = 0; # valueN: N번째 항의 값.  sumN : N항까지의 합의 값

    i = 1 #while문 사용을 위해 변수 하나 입력, 무한 루프에 빠지지 않기 위해 필요
    while i <= n:
        if i == 1:
            valueN = n1
            sumN = valueN
            print(f'{i}번째 합의 값  :  {valueN}')
            print(f'{i}번째 항까지의 합  :  {sumN}')

            i += 1  # 하나씩 올라가야 하니가, 무한루프 빠지지 않게
            continue
            # i가 1인 경우 위로 다시ㅏ 실행되도록, 아래로 내려가지 않도록 하기 위해 continue!

        # 1이 아닐 떄
        valueN *= r
        sumN += valueN
        print(f'{i}번째 합의 값  :  {valueN}')
        print(f'{i}번째 항까지의 합  :  {sumN}')

        i += 1 # 무한반복에 빠지지 않기 위해!

# 이제는 초항,공비, n을 입력 받아야 함
inputN1 = int(input('a1 입력 : '))
inputR = int(input('r공비 입력 : '))
inputN = int(input('n 입력 : '))

sequenceCal(inputN1, inputR, inputN)

공차 vs 공비


# 제로베이스 데이터 취업 스쿨
# Daily study note
profile
비전공자의 데이터 공부법

0개의 댓글