6.3 입력 값을 변수에 저장하기

지금까지 변수를 만들 때 10, 'Hello, world!' 등의 값을 직접 할당해주었습니다. 하지만 이렇게 하면 고정된 값만 사용할 수 있습니다. 그럼 매번 다른 값을 변수에 할당하려면 어떻게 해야 할까요?

6.3.1 input 함수 사용하기

이때는 input 함수를 사용하면 됩니다.

  • input()

>>>input()을 입력한 뒤 엔터 키를 누르면 다음 줄로 넘어갑니다. 이 상태에서 Hello, world!를 입력한 뒤 엔터 키를 누르세요.

>>> input()
Hello, world! (입력)
'Hello, world!'

입력한 문자열이 그대로 출력됩니다. 즉, input 함수는 사용자가 입력한 값을 가져오는 함수입니다

6.3.2 input 함수의 결과를 변수에 할당하기

이제 input 함수의 결과를 변수에 할당해보겠습니다.

  • 변수 = input()

다음과 같이 input 함수의 결과를 변수 x에 할당합니다. 그리고 그다음 줄에서 Hello, world!를 입력한 뒤 엔터 키를 누르세요.

>>> x = input()
Hello, world! (입력)
>>> 

이렇게 하면 변수 x에 입력한 문자열이 저장됩니다. x의 값을 출력해보면 방금 입력한 'Hello, world!'가 나옵니다.

>>> x
'Hello, world!'

여기서 한 가지 불편한 점은 input 함수가 실행된 다음에는 아무 내용이 없어서 입력을 받는 상태인지 출력이 없는 상태인지 알 수가 없다는 점입니다. 이때는 input의 괄호 안에 문자열을 지정해주면 됩니다.

  • 변수 = input('문자열')
>>> x = input('문자열을 입력하세요: ')
문자열을 입력하세요: Hello, world! (입력)
>>> x
'Hello, world!'

실행을 해보면 '문자열을 입력하세요: '처럼 안내 문구가 먼저 나옵니다. 여기에 문자열을 입력한 뒤 엔터 키를 누르면 입력한 그대로 출력됩니다. 즉, 이 문자열은 사용자에게 입력받는 값의 용도를 미리 알려줄 때 사용합니다. 다른 말로는 프롬프트(prompt)라고도 부릅니다(파이썬 프롬프트 >>>와 같은 의미입니다).

6.3.3 두 숫자의 합 구하기

그럼 조금 응용해서 숫자 두 개를 입력받은 뒤에 두 숫자의 합을 구해보겠습니다. 다음 내용을 IDLE의 소스 코드 편집 창에 입력하세요.

input_integer.py

a = input('첫 번째 숫자를 입력하세요: ')
b = input('두 번째 숫자를 입력하세요: ')
 
print(a + b)

소스 코드를 실행하면 '첫 번째 숫자를 입력하세요: '가 출력됩니다. 여기서 10을 입력하고 엔터 키를 누르세요. 그리고 '두 번째 숫자를 입력하세요: '가 출력되면 20를 입력하고 엔터 키를 누르세요.

실행 결과

첫 번째 숫자를 입력하세요: 10 (입력)
두 번째 숫자를 입력하세요: 20 (입력)
1020

10 + 20의 결과는 30이 나와야 하는데 1020이 나왔습니다. 왜 이런 결과가 나왔을까요? input에서 입력받은 값은 항상 문자열 형태이기 때문입니다. 즉, 10과 20은 겉보기에는 숫자이지만 실제로는 문자열이므로 10과 20를 +로 연결하여 1020이 나오게 됩니다.

다음과 같이 input의 결과를 변수에 저장한 뒤 type을 사용해보면 input의 결과가 문자열(str)이라는 것을 알 수 있습니다.

>>> a = input()
10 (입력)
>>> type(a)
<class 'str'>

6.3.4 입력 값을 정수로 변환하기

10 + 20의 결과가 30이 나오게 하려면 input에서 입력받은 문자열을 숫자(정수)로 만들어주어야 합니다.

  • 변수 = int(input())
  • 변수 = int(input('문자열'))

input_integer.py

a = int(input('첫 번째 숫자를 입력하세요: '))    # int를 사용하여 입력 값을 정수로 변환
b = int(input('두 번째 숫자를 입력하세요: '))    # int를 사용하여 입력 값을 정수로 변환
 
print(a + b)

실행 결과

첫 번째 숫자를 입력하세요: 10 (입력)
두 번째 숫자를 입력하세요: 20 (입력)
30

이제 10 + 20의 결과로 30이 나왔죠? 입력받은 값을 숫자(정수)로 만들려면 intinput()을 넣어줍니다. int는 정수로 된 문자열도 정수로 만들 수 있으므로 문자열 '10'은 정수 10으로 바뀝니다.

만약 3.5와 2.1처럼 실수를 더하려면 int 대신 floatinput()을 넣습니다. 각자 소스 코드를 수정하여 실수의 합도 구해보세요.