본문 바로가기

프로그래밍/Python

파이썬 강좌 :: 10. 콘솔입력함수, input

안녕하세요 ! 죠쓰입니다 ~


지난 강좌에서 출력 함수 print에 대하여 알아보았는데요. 출력 함수에 이어서 이번에는 입력 함수에 대해서 알아보는 시간을 갖도록 할꺼에요.


기본적으로 프로그램은 사용자의 입력을 받아 내부적으로 처리한 후 결과를 출력하는 과정을 거치게 된답니다. 여기서 입력은 어떤 식으로 이루어지는 걸까요?


프로그램에서 입력은 다양한 형태로 이루어질 수 있어요. 이를태면 마우스 클릭도 입력이 될 수 있고, 키보드를 누르는 것도 입력이 될 수 있죠. 이 외에도 파일 입력, 음성 입력 등등 입력의 형태는 무수히 많답니다.


우리가 배울 입력은 매우 기초적인 문자열 입력이에요. 우리가 키보드로 문자열을 작성하면 문자열이 프로그램 내부의 변수에 저장할 수 있어요.


input 함수


파이썬은 사용자에게 문자열을 입력받기 위한 input함수를 제공하고 있어요. input함수를 호출하면 프로그램은 대기상태에 돌입하게 되는데, 이 상태에서 사용자가 문자열을 작성하고 엔터를 누를 경우 작성된 문자열이 프로그램 내부로 전달된답니다.


input함수를 호출하는 방법은 다음과 같아요. input이라는 함수이름과 함께 소괄호 쌍을 붙여주면 된답니다. 예시 코드에서 분홍색 글자는 입력된 문자를 뜻해요.


>>> input()

apple

'apple'


input함수를 호출하면 프롬프트가 바로 생성되지 않고 멈추는 것을 볼 수 있어요. 이 때, 문자열을 입력하고 엔터를 누르면 다음과 같이 input함수의 결괏값이 출력되고 프롬프트가 생성되는 것을 확인할 수 있어요.


우리가 input함수를 사용하면서 꼭 기억해두어야 할 1가지는 'input함수가 반환하는 값은 입력받은 문자열" 이라는 점이에요. 즉, 여러분들이 수를 입력해도 그것은 문자형태로 저장된다는 거죠. 다음을 예시를 보세요.


>>> x = input()

22

>>> x

'22'

>>> type(x)

<class 'str'>


x에 저장되는 것은 정수 22가 아닌 문자열 '22'에요. 그렇다면 문자열이 아닌 수를 입력받을 수는 없는 걸까요? 형변환이라는 것을 사용한다면 충분히 가능하답니다. 우리가 입력받은 데이터의 자료형은 str 이에요. 이것을 정수 자료형, int로 바꾸기만 한다면 우리는 수 데이터를 얻을 수 있다는 얘기죠 !




형변환


코드를 작성하다보면 때론 자료형이 서로 다른 데이터끼리 연산을 해야할 때가 생겨요. 이러한 경우에 필요한 것이 바로 형변환이랍니다.


형변환을 하면 해당 데이터를 원하는 자료형으로 바꿀 수 있어요. str형을 int형으로 바꿀 수도 있고, int형을 float형으로 바꿀 수도 있죠. 그러나 무조건 변환할 수 있는 것은 아니에요. 어느정도 조건이 맞아야 형변환을 할 수 있답니다. 예를 들어 '10' 이라는 문자열을 정수로 형변환하는 것은 자연스럽지만 'hello'라는 문자열을 정수로 형변환하는 것은 뭔가 이상하죠? 마찬가지로 파이썬도 이러한 말도 안되는 형변환은 감지하여 에러를 발생시킨답니다.


자 그럼 형변환을 해볼까요? 형변환을 하는 방법은 간단해요. 원하는 자료형의 이름과 소괄호 쌍을 작성하고 소괄호 쌍 내부에 데이터를 집어넣으면 된답니다. 간단하게 int형으로 형변환하는 예시를 보여드릴게요 !


>>> s = '100'

>>> x = int(s)

>>> x

100

>>> type(x)

<class 'int'>


예시에서 변수 x에 문자열 '100'이라는 데이터를 int형으로 형변환해서 대입하고 있어요. 실제로 확인해본 결과 변수 x에는 int형 정수 데이터 100이 대입되었네요. 여기서 주의할 점은 변수 s의 자료형이 변환된 것이 아니라는 점이에요. int(s) 코드의 결괏값이 int형 정수데이터인 것 뿐이죠.


이번에는 정수를 문자열로 형변환해볼까요?


>>> x = 100

>>> s = str(x)

>>> s

'100'

>>> type(s)

<class 'str'>


str(x)코드 덕분에 우리는 정수데이터를 문자열 데이터로 변환할 수 있어요. 마찬가지로 변수 x의 자료형이 str형으로 변환된 것이 아니에요. 코드 str(x)의 결괏값이 str형인 것 뿐이죠.


만약 변수의 자기자신의 자료형을 변환하고 싶다면 어떻게 해야할까요? 형변환한 데이터를 자기 자신에 대입하면 된답니다 ~


>>> x = 100

>>> x = str(x)


간단하죠?