8.3 한 번에 값 두 개 입력받기

지금까지 input 한 번에 값 하나만 입력받았습니다. 그럼 input 한 번에 값을 여러 개 입력받으려면 어떻게 해야 할까요? 이때는 input에서 split을 사용한 뒤 여러 개의 변수에 저장해주면 됩니다(각 변수는 콤마로 구분해줍니다).

  • 변수1, 변수2 = input().split()
  • 변수1, 변수2 = input().split(기준문자)
  • 변수1, 변수2 = input(문자열).split()
  • 변수1, 변수2 = input(문자열).split(기준문자)

먼저 문자열 두 개를 입력받아 보겠습니다. 다음 내용을 IDLE의 소스 코드 편집 창에 입력하세요.

input_split_string.py

a, b = input('문자열 두 개를 입력하세요: ').split()    # 입력받은 값을 공백을 기준으로 분리
 
print(a)
print(b)

소스 코드를 실행하면 '문자열 두 개를 입력하세요: '가 출력됩니다. 이 상태에서 Hello Python을 입력하고 엔터 키를 누르세요.

실행 결과

문자열 두 개를 입력하세요: Hello Python (입력)
Hello
Python

inputsplit을 사용하면 입력받은 값을 공백을 기준으로 분리하여 변수에 차례대로 저장합니다(split은 분리하다, 나누다라는 뜻입니다). 여기서는 문자열 'Hello Python'을 공백을 기준으로 분리하여 'Hello'는 첫 번째 변수 a'Python'은 두 번째 변수 b에 저장합니다.

# ↓ 'Hello'가 저장됨
  a , b  = input('문자열 두 개를 입력하세요: ').split()
#     ↑ 'Python'이 저장됨

그럼 숫자 두 개는 어떻게 입력받을까요? 방법은 앞과 같습니다. 단, input().split()으로 입력받은 값은 문자열 상태이므로 int를 사용하여 정수로 변환해주어야 합니다.

input_split_int.py

a, b = input('숫자 두 개를 입력하세요: ').split()    # 입력받은 값을 공백을 기준으로 분리
a = int(a)    # 변수를 정수로 변환한 뒤 다시 저장
b = int(b)    # 변수를 정수로 변환한 뒤 다시 저장
 
print(a + b)

소스 코드를 실행하면 '숫자 두 개를 입력하세요: '가 출력됩니다. 이 상태에서 30 40을 입력하고 엔터 키를 누르세요.

실행 결과

숫자 두 개를 입력하세요: 30 40 (입력)
70

inputsplit을 사용해서 입력받은 값을 공백을 기준으로 분리하여 변수에 차례대로 저장했습니다. 여기서는 문자열 '30 40'을 공백을 기준으로 분리하여 '30'은 첫 번째 변수 a'40'은 두 번째 변수 b에 저장했습니다.

# ↓ '30'가 저장됨
  a , b  = input('숫자 두 개를 입력하세요: ').split()
#     ↑ '40'이 저장됨

split으로 분리한 값은 문자열 상태이므로 계산할 때는 다음과 같이 int를 사용하여 정수로 변환한 뒤 다시 저장해줍니다.

a = int(a)    # 변수를 정수로 변환한 뒤 다시 저장
b = int(b)    # 변수를 정수로 변환한 뒤 다시 저장

변수가 준비되었으면 두 변수를 더해서 출력합니다.

print(a + b)

물론 print 안에서 int로 변수를 변환하고 바로 더해도 상관없습니다.

print(int(a) + int(b))

split의 결과를 매번 int로 변환해주려니 귀찮습니다. 이때는 map 함수를 함께 사용하면 됩니다. mapintinput().split()을 넣으면 split의 결과를 모두 int로 변환해줍니다(실수로 변환할 때는 int대신 float를 넣습니다.).

  • 변수1, 변수2 = map(int, input().split())
  • 변수1, 변수2 = map(int, input().split(기준문자))
  • 변수1, 변수2 = map(int, input(문자열).split())
  • 변수1, 변수2 = map(int, input(문자열).split(기준문자))

다음 내용을 IDLE의 소스 코드 편집 창에 입력하세요.

map_input_split.py

a, b = map(int, input('숫자 두 개를 입력하세요: ').split())
 
print(a + b)

소스 코드를 실행하면 '숫자 두 개를 입력하세요: '가 출력됩니다. 이 상태에서 30 40을 입력하고 엔터 키를 누르세요.

실행 결과

숫자 두 개를 입력하세요: 30 40 (입력)
70

입력받는 부분과 int로 변환하는 부분이 한 줄로 줄었습니다. 이렇게 input().split()을 사용할 때 map을 사용하면 코드를 짧게 줄일 수 있습니다. map에 대한 자세한 내용은 '23.7 리스트에 map 함수 사용하기'에서 자세히 설명하겠습니다. 지금은 이렇게 사용하면 된다는 정도만 알아 두면 됩니다.

이번에는 split에 기준 문자를 지정하여 공백이 아닌 다른 문자로 분리해보겠습니다.

map_input_split_comma.py

a, b = map(int, input('숫자 두 개를 입력하세요: ').split(',')) # 입력받은 값을 콤마를 기준으로 분리
 
print(a + b)

소스 코드를 실행한 뒤 '숫자 두 개를 입력하세요: '가 출력되면 30,40을 입력하고 엔터 키를 누르세요.

실행 결과

숫자 두 개를 입력하세요: 30,40 (입력)
70

split(',')과 같이 분리할 기준 문자를 콤마로 지정하였으므로 '30,40'에서 30은 a, 40은 b에 저장됩니다.

지금까지 사용자가 입력한 값을 처리해보았습니다. 여기서는 inputsplit의 결과가 문자열라는 점이 중요합니다. 따라서 숫자 계산을 한다면 int, float를 사용해서 결과를 숫자로 변환해주어야 한다는 점 기억하세요. 그리고 split의 결과를 모두 int, float로 변환할 때는 map을 사용하면 편리합니다.