6.4 입력 값을 변수 두 개에 저장하기
지금까지 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
input에 split을 사용하면 입력받은 값을 공백을 기준으로 분리하여 변수에 차례대로 저장합니다(split은 분리하다, 나누다라는 뜻입니다). 여기서는 문자열 'Hello Python'을 공백을 기준으로 분리하여 'Hello'는 첫 번째 변수 a에 'Python'은 두 번째 변수 b에 저장합니다.
a , b = input('문자열 두 개를 입력하세요: ').split()
6.4.1 두 숫자의 합 구하기
그럼 숫자 두 개를 입력 받아서 두 숫자의 합을 구해보겠습니다.
input_split_int.py
a, b = input('숫자 두 개를 입력하세요: ').split() # 입력받은 값을 공백을 기준으로 분리 print(a + b)
실행 결과
숫자 두 개를 입력하세요: 10 20 (입력) 1020
30이 나와야 하는데 1020이 나왔습니다. 왜냐하면 input에서 입력받은 값은 문자열이고, 이 문자열은 split으로 분리해도 문자열이기 때문입니다. 여기서는 문자열 '10 20'을 공백을 기준으로 분리하여 a에는 '10', b에는 '20'이 저장되므로 +로 연결하면 '1020'이 나옵니다.
a , b = input('숫자 두 개를 입력하세요: ').split()
6.4.2 입력 값을 정수로 변환하기
10 + 20의 결과가 30이 나오게 하려면 변수 a와 b를 정수로 변환해주어야 합니다.
input_split_int.py
a, b = input('숫자 두 개를 입력하세요: ').split() # 입력받은 값을 공백을 기준으로 분리 a = int(a) # 변수를 정수로 변환한 뒤 다시 저장 b = int(b) # 변수를 정수로 변환한 뒤 다시 저장 print(a + b)
실행 결과
숫자 두 개를 입력하세요: 10 20 (입력) 30
a = int(a)와 같이 int에 변수를 넣은 뒤 다시 변수에 저장해주면 변수가 정수 자료형으로 변환됩니다. 이때 int(a)처럼 int만 사용하고 결과를 변수에 저장하지 않으면 정수로 변환되지 않습니다. 이 부분 꼭 기억해두세요.
물론 print 안에서 int로 변수를 변환하고 바로 더해도 상관없습니다.
print(int(a) + int(b))
6.4.3 map을 사용하여 정수로 변환하기
split의 결과를 매번 int로 변환해주려니 귀찮습니다. 이때는 map을 함께 사용하면 됩니다. map에 int와 input().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)
실행 결과
숫자 두 개를 입력하세요: 10 20 (입력) 30
입력받는 부분과 int로 변환하는 부분이 한 줄로 줄었습니다. 이렇게 input().split()을 사용할 때 map을 사용하면 코드를 짧게 줄일 수 있습니다. map은 '22.6 리스트에 map 사용하기'에서 자세히 설명하겠습니다. 지금은 이렇게 사용하면 된다는 정도만 알아 두면 됩니다.
6.4.4 입력받은 값을 콤마를 기준으로 분리하기
이번에는 split에 기준 문자열을 지정하여 공백이 아닌 다른 문자로 분리해보겠습니다.
map_input_split_comma.py
a, b = map(int, input('숫자 두 개를 입력하세요: ').split(',')) # 입력받은 값을 콤마를 기준으로 분리 print(a + b)
소스 코드를 실행한 뒤 '숫자 두 개를 입력하세요: '가 출력되면 10,20을 입력하고 엔터 키를 누르세요.
실행 결과
숫자 두 개를 입력하세요: 10,20 (입력) 30
split(',')과 같이 분리할 기준 문자열을 콤마로 지정하였으므로 '10,20'에서 10은 a, 20은 b에 저장됩니다.
지금까지 변수를 만들고 input 함수를 사용해보았습니다. 변수는 값이나 계산 결과를 저장할 때 사용한다는 점, 변수를 만드는 방법, 변수 이름을 짓는 방법만 기억하면 됩니다. 특히 input과 split의 결과가 문자열라는 점이 중요합니다. 따라서 숫자 계산을 한다면 int, float를 사용해서 결과를 숫자로 변환해주어야 한다는 점 기억하세요. 그리고 split의 결과를 모두 int, float로 변환할 때는 map을 사용하면 편리합니다.