programming

파이썬 두 숫자 입력 받아 사칙연산 함수로 구현하기


by Kitle · 2020. 07. 09.



네 오늘은 두 숫자 입력 받아 사칙연산 함수로 구현하기를 한번 해보겠습니다.

 첫번째로 두 숫자를 입력 받아야겠죠?

 input()을 활용하여 숫자 두개를 받고 출력해보죠.


user_input_one = int(input('input num A:'))
user_input_two = int(input('input num B:'))
print(user_input_one)
print(user_input_two)


어려움 없이 바로 입력 -> 변수저장 -> 출력 으로 갈 수 있겠죠?


1회성 출력이나 1회성 계산은 이름을 붙여줄 필요 없이 바로 출력해도 되겠지만, 함수로 인해 넘겨주고 받거나 또 두번이상 사용한다면 반드시 이름을 붙여둘 필요가 있겠죠. 


자 그다음 입력받은 두 숫자로 사칙연산을 해보겠습니다.


user_input_one = int(input('input num A:'))
user_input_two = int(input('input num B:'))

print(user_input_one + user_input_two)
print(user_input_one - user_input_two)
print(user_input_one * user_input_two)
print(user_input_one / user_input_two)


저는 입력값으로 1, 2 를 입력했더니 다음과 같이 결과가 나왔네요.

3

-1

2

0.5


python3 기준이며 2는 결과가 다를 수 있어요.


오늘은 너무 쉽죠? 여기까지 하고싶지만...

사칙연산을 함수로 구현해 달라고 합니다.


함수는 사용자 입잡에서 원하는 입력을 출력으로 바꿔주는 블랙박스라고 생각하면 됩니다.

더하기라는 함수를 만들면 입력 -> 더하기 -> 출력을 만들 수 있죠.

이걸 왜 만드느냐구요? 구조화를 해서 보기에도 사용하게도 깔끔하게 하고, 여러 데이터를 반복적으로 활용하게도 하고, 프로그램 작성시 알아보기도 쉽고 이유는 많습니다.


자 그럼 함수를 만들어 볼게요. 함수는 함수이름을 선언하는 것으로 부터 시작해요. 사칙연산을 한번에 해주는 함수를 만들어보죠.

def cal_result(a, b):
    print(a, '+', b, '=', a + b)
    print(a, '-', b, '=', a - b)
    print(a, '*', b, '=', a * b)
    print(a, '/', b, '=', a / b)

user_input_one = int(input('input num A:'))
user_input_two = int(input('input num B:'))
cal_result(user_input_one, user_input_two)


이렇게 선언할 수 있어요. 주의할점은 함수는 사용하기 전에 미리 선언해야 해요. def 부분 전체를 맨아래로 내리면 에러가 날꺼에요 꼭 해보세요. 

따라서 위에는 함수는 이렇게 동작할거야 하고 정의를 먼저 하는것이고 실제 사용은 맨마지막 줄 호출에 있어요.

반대로 호출을 먼저 했는데 함수가 어떻게 할지 알려주지 않았다면 에러가 나요.

파이썬은 기본적으로 위의 문장부터 아래로 분석해요. 일반적인 절차는 위에서부터 쓰는게 맞지만, 함수의 경우는 항상 선 정의 후 사용을 주의하세요.

자 이제 결과가 잘 나오네요. 그런데 굳이 사칙연산을 매번 할 필요 있을까요?


한번에 하나의 연산만 하고싶다면 어떻게 할까요? 함수부만 수정해주면 되겠죠? 조건문을 활용하고, 이 조건을 나누기 위해 + - * / 사칙연산을 구분하고, 더 나아가서는 입력받을 필요가 있어요. 다음과 같이 한번 해볼게요.


def cal_result(a, b, op):
    if op == '+':
        return a+b
    elif op == '-':
        return a-b
    elif op == '*':
        return a*b
    elif op == '/':
        return a/b

user_input_one = int(input('input num A:'))
user_input_two = int(input('input num B:'))
user_input_op = input('input op:')
print("result is", cal_result(user_input_one,user_input_two,user_input_op))


으로 한번 해볼게요. 이제 입력한 연산자에 대한 결과만 출력되죠?

출력 부분을 함수에서 할 수 있고 호출한 문장에서 돌려받아서 할 수도 있는데 정답은 없어요.

상황에 맞게 하시면 되요.


아직 추가적인 예외처리가 부족하지만 그 부분은 저의 다른글을 참고해주세요:)