IT프로그래밍

[Python]파이썬 입력 / Python 입력 / 파이썬 input / Python input

Manniz 2020. 4. 5.

 

파이썬 입력 함수 : input

 

C언어의 scanf와 같이 사용자에게 문자열을 입력받는 함수입니다.

 

소스코드와 설명을 통해 기본 적인 사용법 및 주의할 점 등을 말씀드릴께요

 

1. input()

 

소스코드

print("a에 할당할 값을 입력해주세요 : ")
a=input()
print("입력하신 값은", a, "입니다")
 

 

실행 결과

실행을 하면 print로 출력한 문장이 나오고

다음 행에서 커서가 깜빡입니다.

값에 10을 넣고 엔터를 칩니다

변수 a에 사용자가 입력한 값 10이 할당되어, 다음행에 반영된 것을 볼 수 있습니다.

 

하지만 파이썬의 input()의 파라미터로 출력할 글자를 넣을 수 있습니다. 다음 예제를 보시죠

 

2.input("출력내용")

소스코드

#print("a에 할당할 값을 입력해주세요 : ")
a=input("a에 할당할 값을 입력해주세요 : ")
print("입력하신 값은", a, "입니다")
 

 

기존에 했던 1번 예제에서 처음 줄을 주석 처리하고 input함수 안에 넣었습니다.

파이썬 주석에 관해서 참고하실분은 하단의 링크를 눌러 포스팅을 참조해주시기 바랍니다.

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

파이썬 주석 처리 / 파이썬 한줄 주석 / 파이썬 여러줄 주석 포스팅 보러가기

 

실행결과

input에 입력한 파라미터 옆으로 커서가 깜빡이며 값을 입력하였을 경우

역시 변수 a에 값이 할당 되어 결과가 출력된 것을 확인할 수 있습니다.

 

3. input으로 여러개 입력 받기

그럼 input 한번으로 값을 한번만 입력 받을 수 있는 것인가 ? 라는 의문이 들 수 있습니다.

당연히 아닙니다!

다음 예제에서 여러개의 값을 입력 받는 것을 보여드리겠습니다.

 

소스코드

a,b = input("a, b에 할당할 값을 입력해주세요 : ").split()
print("a에 입력하신 값은", a, "입니다")
print("b에 입력하신 값은", b, "입니다")
 
 

.split()을 사용하여 변수 a, b의 값을 한번에 입력 받겠습니다.

엄밀히 얘기하면 다르지만(왜 다른지는 밑에서 설명하겠습니다)

이것은 c언어에서 scanf("%d %d", &a, &b)와 유사하다고 이해하시면 됩니다.

다음과 같이 입력을 받을 때는 공백(스페이스)을 통해 값을 구분하게 됩니다.

 

실행결과

 

4. 입력받은 변수의 자료형

위에서 왜 scanf("%d %d", &a, &b)와 같다고 하지 않고 유사하다고 말씀을 드렸냐면

c언어의 해당코드에서는 변수 a와b의 자료형이 정수로 들어올 것이라고 선언을 하였습니다("%d")

하지만 위 예제의 파이썬 코드에서는 그것이 없습니다..

눈치채셨을 수도 있겠지만 .split()은 c언어에서 문자열에서 쓰입니다.

정확히 얘기하면 이번 포스팅에서 우리가 입력받은 숫자들은 모두 문자열 입니다.

다음 예제를 통해서 그것을 증명해보겠습니다.

 

소스코드

a,b = input("a, b에 할당할 값을 입력해주세요 : ").split()
print("a에 입력하신 값은", a, "입니다")
print("b에 입력하신 값은", b, "입니다")
 
print("변수 a의 자료형은 ", type(a), "입니다")
print("변수 b의 자료형은 ", type(b), "입니다")
 

실행결과

type()이라는 변수의 자료형을 확인하는 함수를 통해 해당 변수가 갖는 자료형이 str이라는 것을 확인 할 수 있습니다.

 

하나 더 예제를 살펴보겠습니다

 

소스코드

a, b = input("합을 구할 두 수를 입력해 주세요.").split()
print(a , "+", b , "=",a+b, "입니다.")
 

 

실행결과

 

5 + 90 = 590 이라는 이상한 결과가 나왔습니다.

이것은 실제 숫자연산을 수행한 것이 아니라 문자열+문자열로 단순히 변수 a와 변수 b를 차례대로 나열한 

문자열 합이기 때문입니다.

 

그렇다면 이런 문제를 어떻게 해결할 수 있을까요?

 

해답은 2가지 입니다.

1. 입력을 받은 후 자료형을 캐스팅 한다.

2. 입력을 받을 때 해당 자료형으로 받는다.

 

두가지 예제 모두 보여드리겠습니다.

소스코드

a, b = input("합을 구할 두 수를 입력해 주세요.").split()
print("a의 자료형 : ", type(a))
print("b의 자료형 : ", type(b))
a=int(a)    #변수 a를 int형으로 캐스팅
b=int(b)    #변수 b를 int형으로 캐스팅
print("a의 자료형 : ", type(a))
print("b의 자료형 : ", type(b))
print(a , "+", b , "=",a+b, "입니다.")
 

실행결과

a=int(a)

b=int(b)

를 통해서 해당 자료형이 str에서 int로 변환 되었습니다.

결과 값 역시 int 연산을 수행하여 1+74 = 75의 값으로 나왔습니다.

 

그 다음으로 입력을 받을 때부터 원하는 자료형으로 받는 것을 보여드리겠습니다.

여기에서는 map함수를 사용하게 되는데, 해당 내용은 추후 포스팅에서 자세하게 다루도록 할께요.

우선은 이렇게도 사용하는 구나 정도로 봐주시길 바랍니다.

 

소스코드

a, b = map(int, input("합을 구할 두 수를 입력해 주세요.").split()) #map사용
print("a의 자료형 : ", type(a))
print("b의 자료형 : ", type(b))
print(a , "+", b , "=",a+b, "입니다.")
 

 

실행결과

 

다음과 같이 입력을 받고 나서 바로 타입을 출력하여도 int형임을 확인 할 수 있습니다.

 

이상 파이썬 입력 함수 input에 대해 알아보았습니다.

 

잘못된 내용은 댓글로 남겨주시면 수정하도록 하겠습니다

댓글