[6] 파이썬 입문 - 입력과 출력
프로그램가 어떤 계산을 하도록 컴퓨터에게 작업을 지시하기 위해서는 값을 정해 주어야 합니다. 그런데 문제는 이름에 값을 지정한 후 그것을 사용하여 계산을 하면 항상 같은 값에 대해서만 계산을 할 수 있다는 점입니다. 프로그램이 어떤 일을 하도록 작성되었다면 그 일을 여러 가지 값에 대해 다 할 수 있으면 훨씬 좋을 것입니다.
예를 들어 다음과 같은 코드를 살펴보겠습니다.
> a = 15
> a % 2 == 0
False
> a % 3 == 0
True
> a % 5 == 0
True
> a % 7 == 0
False
a가 2, 3, 5, 7의 배수인지 알고 싶은데, 이런 식으로 하게 되면 다른 수에 대해 같은 걸 알기 위해 매번 이렇게 많은 코드를 직접 써야 되고 컴퓨터가 하는 일에 비해 우리가 쳐야 하는 키보드 키가 너무 많아집니다. (우리는 컴퓨터에게 일을 시키고 싶지 우리가 노가다를 하고 싶지는 않습니다)
이럴 때 앞에서 살펴보았던 실행환경 사이트 playground.programiz.com 의 왼쪽에 있던 편집창을 이용해서 프로그램을 작성하면 좋습니다. 왼쪽 편집창에 다음 코드를 입력하고 Run 버튼을 누르면 오른쪽 쉘창에 실행 결과를 볼 수 있습니다.
여기서 print( )는 괄호 안에 있는 수식을 계산해서 그 결과를 우리가 볼 수 있게 찍어달라는 명령문입니다. 이것을 출력이라고 하죠. 그럼 오른쪽처럼 차례로 출력되는 것을 볼 수 있습니다. 이걸 좀더 알아보기 좋게 출력하기 위해 다음과 같이 바꿔볼 수도 있습니다.
print 명령문은 괄호 안에 있는 것들을 차례로 계산해서 출력하고 끝에 줄바꿈을 넣어줍니다. 문자열은 그대로 쉘창에 출력되겠지요?
이번에는 숫자를 바꿔보겠습니다. 만약 15가 아니라 18에 대해 알고 싶다면? 프로그램 안에 a = 15 대신 a = 18이라고 바꿔 적고 다시 실행을 해 볼 수 있습니다. 그러나 프로그램을 고쳐야만 다른 수를 실행해 볼 수 있다면 프로그램을 짠 보람이 없습니다. 우리는 어떤 숫자든 지시한 일을 할 수 있는 프로그램을 원합니다.
이런 경우를 위해 프로그램이 사용자가 원하는 숫자를 입력받게 하는 방법이 필요합니다. 실제로 엔간한 프로그램이라면 입력을 받고 그것을 이용해서 계산하여 결과를 보여주는 것이 가장 자연스러운 일입니다.
입력을 위해서는 input('=> ') 이라는 함수를 이용합니다. 여기서 '=> '는 우리 프로그램이 입력을 받을 준비가 되어 있다는 것을 나타내는 입력 커서입니다. 쉘창의 커서와는 구별되게 하는 것이 좋겠죠? 여기서는 =>로 표시를 했지만 다른 것도 가능합니다.
그런데 여기서 한가지 문제가 있습니다. 입력된 55는 숫자가 아니라 문자열 '55'라는 것입니다.
input()은 사실 무슨 입력이든 받을 수 있습니다. 그러므로 문자열도 들어올 수 있고 숫자도 들어올 수 있는 것이지요. 그래서 input()은 숫자를 받아도 그것을 문자열로 인식해서 '55'를 돌려줍니다. % 연산은 숫자에 대해서만 가능하기 때문에 이 경우 a % 2를 하면 다음과 같이 오류메시지가 나오게 됩니다.
여기 오류 메시지는 무슨 문제가 있다는 것인지 즉시 알기 어렵지만 2번 줄에서 TypeError가 발생했음을 알려줍니다. 그 이유는 A % 2가 숫자가 아닌 문자열에 % 연산을 적용했기 때문입니다. 이것은 사실 입문한 사람이 알기는 어려운 점인데요 파이썬을 배우는 첫번째 고비라고 할 수 있죠.
이것을 해결하기 위해서는 int( )라는 것을 이용해서 문자열을 숫자로 바꾸어야 합니다. 이것을 타입변환이라고 하는데요, 문자열로 입력받은 값을 정수 타입으로 바꿔 달라는 명령입니다. 파이썬이 알아서 하지 못하고 우리가 그것을 해주어야 하는데, 그 이유는 앞에서도 얘기했듯이 입력이 문자열이어서 숫자로 바뀔 수 없는 경우도 있기 때문에 프로그래머가 책임을 지라는 뜻으로 int( )를 붙이도록 요구하고 있는 것 같습니다.
여기서 a = int(a)는 양쪽에 a가 나와서 좀 의외죠? 오른쪽 a는 a가 가진 값을 사용하라는 뜻이고 왼쪽의 a는 a라는 이름에 오른쪽 식의 결과를 넣으라는 뜻입니다. 이렇게 해서 a에는 숫자 54가 들어가게 되었죠.
이제 우리가 입력을 받을 수 있게 되었으므로 프로그램 수정 없이 Run을 다시 눌러서 다른 값을 입력해 볼 수 있습니다. 사실 여기서는 편집기와 실행이 바로 붙어있지만 프로그램을 수정하지 않고 실행할 수 있다는 것은 그 프로그램을 다른 곳에 가져가서 실행만 해도 되는 상태, 즉 배포 가능한 프로그램이 되었다는 뜻입니다. 우리는 숫자를 받아 2, 3, 5, 7의 배수인지를 출력하는 배포 가능한 프로그램을 만들었습니다.