08_파이썬 중급 문제풀이

ryu·2023년 5월 14일

함수(1)

def addNum(num1, num2):
    return num1 + num2

def subNum(num1, num2):
    return num1 - num2

def mulNum(num1, num2):
    return num1 * num2

def divNum(num1, num2):
    return num1 / num2


operators = [(addNum, '+'), (subNum, '-'), (mulNum, '*'), (divNum, '/')]

while True:
    selectCal = int(input('1. 덧셈, 2. 뺄셈, 3. 곱셈, 4. 나눗셈, 5. 종료 :'))
    if selectCal < 1 or selectCal > 5:
        print('유효한 숫자를 입력하세요')
        continue
        
    elif selectCal == 5:
        print('Bye~')
        break
        
    else:
        num1 = float(input('첫 번째 숫자 입력: '))
        num2 = float(input('두 번째 숫자 입력: '))

        print(f'{num1} {operators[selectCal-1][1]} {num2} = {operators[selectCal-1][0](num1, num2)}')

조건문을 5개나 분기하기가 싫어서 위와 같이 풀이해봤다. 풀 때는 '이렇게도 됐었던 것 같은데..' 하면서 약간 흐릿한 기억으로 풀었어서 관련 내용을 다시 찾아봤고, 일급객체에 대한 내용을 이해하면 될 것 같다.

일급객체

일급객체란?

  • 일급객체(first-class object)란 다음 조건들을 만족하는 객체를 의미함. 파이썬에서 함수 역시 일급객체의 한 종류

    • 변수나 데이터 구조에 넣을 수 있어야 함
    • 매개변수에 전달할 수 있어야 함
    • 반환값으로 사용할 수 있어야 함
  • 위 풀이에 보면 operators라는 리스트 안에 4개의 튜플이 있고 그 안에 각각 0번 인덱스의 원소로 각 연산의 함수가 들어가있음. 이렇게 데이터 구조에 들어갈 수 있음

  • 변수에 들어갈 수 있다는 건 아래와 같이 함수를 변수에 할당할 수 있다는 의미

    def sayHello():
      	print("Hi!")
        
    say_hi = sayHello
    
    say_hi()	# Hi!

0개의 댓글