본문 바로가기
Python/Python Basic

14. Python - input() 함수로 필요한 정보를 입력해보자.

by Rosmary 2019. 10. 19.
728x90
반응형

지금까지 작성해왔던 python 코드의 대부분은, 외부에서 입력된 값을 토대로 프로그램이 작동하는 것이 아니라, 코드 내의 변수값을 참조하여 작동하는 것이 전부였다. 예를 들어, 구구단 같은 경우, 코드 내에서 단에 해당하는 변수인 dan의 값을 지정해주어야만, 프로그램이 해당 단을 출력해주었다.

 

2단부터 9단까지 순차적으로 출력을 진행해주는 프로그램이 존재한다고 가정해보자. 필자는 이 프로그램을 통해, 3단에 해당하는 구구단만 검색하고 싶은데, 이 프로그램은 필자의 마음을 1도 알아주지 않고, 2단부터 9단까지 모든 정보를 출력해준다. 구구단 프로그램이 사용자가 조회하기를 원하는 단의 숫자를 입력하면, 그 숫자에 해당하는 단만 출력하도록 만들 수는 없는 것일까? 물론 가능하다. input()이라는 함수를 이용하면 말이다.

 

 

1. input()함수

 

사용자로부터 입력받은 명령을 통해, 최종적으로 컴퓨터가 진행하는 동작은 크게 2가지다. 입력과 출력. 출력은, 컴퓨터가 진행한 연산 결과가 화면에 출력되거나, 종이에 프린트되는 등 눈에 보이는 결과물로 나타나는 동작을 말한다. 반대로 입력은, 컴퓨터에게 어떤 정보를 알려주는 것으로, 키보드 타이핑을 치거나, 마우스를 클릭하는 행위를 예로 들 수 있다. 

 

지금까지 봐왔던 Python 코드에 의해 컴퓨터가 진행한 동작은 전부 출력이었다. 이렇게 출력을 유도하는 코드의 예로 print() 함수를 들 수 있다. input() 함수는 프린트와 달리, 사용자에게 정보를 입력할 것을 요구한다. Python의 interactive 모드에서 다음과 같이 코드를 작성하고 실행해보자.

 

==========================

name = input()

==========================

 

일반적인 코드를 입력했을 때와 다르게, 커서가 아랫줄로 내려가지만 ">>" 표시가 보이지 않는다. 당황하지 말자. 정상이니깐. 이제 이 커서 위에, 여러분들이 출력하고 싶은 이름을 아무거나 입력해보자. 필자는 loricatuslupus라는 이름을 입력할 것이다.

 

이 코드는 "Name 이라는 변수명에, 사용자가 입력한 이름을 저장하라"는 의미를 가진다. 따라서, Name을 print()함수로 출력해보면, 여러분들이 입력한 이름이 고스란히 화면에 출력된다.

 

 

input() 함수는 하나 이하의 인자를 가질 수 있다. 마치 print()함수와 비슷한데, print()함수의 괄호 내에 문자열이나 숫자를 입력하면 고스란히 출력되듯이,  input() 함수도 괄호 내의 문자열이나 숫자를 출력해준다. 이러한 특성 때문에, input() 함수의 괄호 내에 작성하는 문자열은 보통, 입력 정보가 어떤 것인지 나타내는 문구가 들어간다.

 

interactive 모드에서는 그 중요성이 크게 느껴지지 않지만, 메모장 등의 툴을 이용하여 코드를 실행하면, input() 함수 내의 내용이 얼마나 중요한지 느껴질 것이다. 필자는 다음과 같은 코드를 메모장에 작성하고, test.py라는 이름으로 저장한 뒤, 이 파일을 실행할 것이다.

 

 

파일이 실행되기는 하는데, 어떤 값을 입력해야하는지에 대한 정보가 주어지지 않기 때문에, 처음 이 프로그램을 접하는 사람들이나 컴맹이라면 분명, 프로그램이 오작동하고 있다고 생각할 것이 뻔하다. 이제 input()함수 내에 입력 정보에 대한 설명을 집어넣어보자.

 

 

 

2. input() 함수 사용 시, 주의점

 

input()함수를 통해 전달받는 정보는 기본적으로 문자열이다. 무슨 말이냐 하면, age를 입력하라고 해서 15를 입력한다해도, 컴퓨터는 입력된 15를 숫자로 인식하지 않고, 문자열 "15"로 인식한다는 말이다. 아래의 코드를 이용해, 입력값으로 연산을 진행해보자.

 

 

문자열에 대한 포스팅에서 언급했듯이, 더하기 연산의 결과가 문자열 연산 결과인 "1510"으로 나타나는 것을 볼 수 있다. 

 

그렇다면, 연산을 위해 숫자를 입력받고자 한다면 어떻게 해야할까? 가능한 한 가지 방법은, input() 함수 전체를 형변환(type casting) 시켜줌으로써, 문자열을 숫자로 변수에 저장하도록 만드는 것이다.

 

빨간 사각형 내부가 수정된 코드의 결과다.

 

문자열을 정수형인 int로 형변환 하기 위해, input 함수 전체를 int() 함수 괄호 내에 위치시켰다. 이 때 주의해야 하는 점은, int() 함수의 괄호 내에 들어올 수 있는 문자열은 반드시 숫자로만 구성되어야 한다는 것이다. 그렇지 않다면, 아래와 같이 Value Error가 발생하게 된다.

 

 

그렇기 때문에 int()함수를 사용하면 소수점을 사용해야하는 실수 역시 표현이 불가능해진다. 만약, 소수점을 입력해야하는 상황이 온다면, int()함수 대신, float() 함수를 사용하면 된다.

 

 

 


지금까지, 입력을 위한 코드인 input()함수에 대해 알아보았다. 처음에는 익숙하지 않아서 print() 사용만큼 쉽지 않다는 생각이 들 수 있는데, 반복적으로 숙달하다보면, print()보다도 더 많이 사용하게 되는 상황이 발생하게 된다.

 

이번 포스팅까지 Python에서 자주 사용하는 코드에 대해 정리해보았다. 다음 포스팅부터는 프로그래밍을 사용함에 있어서 반드시 알고 넘어가야 하는 함수의 개념과 사용법, 그리고 객체 지향언어에서 가장 기본적인 개념인 클래스와 메서드 등에 대해 작성해 볼 예정이다. 

 

 

ps:   심심하신 분들은, 지금까지의 내용을 토대로 아래와 같이 프로그램이 작동하도록 코드를 작성해보자. 

 

조건) 1. 특정 숫자를 입력하면, 그 숫자에 맞는 구구단을 출력하도록 함.

        2. 입력값은 2~9 범위의 숫자만을 허용하며, 이에 위반되는 경우, 프로그램을 처음부터 진행하도록 함.

           단, 예외 처리에 대해서 아직 언급하지 않았기에, 테스트 시 입력되는 값은 반드시 정수여야만 한다.

        3. 결과물은 아래와 같음.

 

       < 조건 1 >

        < 조건 2 >

 

 

코드 작성에는 길어야 1분도 안 걸린다.

 

FIN.

반응형

댓글