백준을 풀다가 input을 여러개 입력받으려면 어떻게 해야하는지 찾다가 정리하기 위해 작성하였다.
결론적으로, input에서 split을 사용한 변수 여러 개에 저장해주면 된다.
파이썬에서 split은 문자열을 쉽게 분리할 수 있도록 제공해주는 메서드이다.
이때 메서드의 인자는 어떤 문자를 기준으로 문자열을 나눌지 이다.
a, b = input('문자열 두 개를 입력하세요: ').split() # 입력받은 값을 공백을 기준으로 분리
print(a)
print(b)
소스코드를 실행하면 '문자열 두 개를 입력하세요: ' 가 출력된다.
문자열 두 개를 입력하세요: hello python # 입력
hello
python
input에 split을 사용하면 입력받은 값을 공백을 기준으로 분리하여 변수에 차례대로 저장한다.
여기서는 문자열 'hello python'을 공백을 기준으로 분리하여 'hello'를 첫번째 변수 a에, 'python'은 두번째 변수 b에 저장한다
그럼 두 숫자를 입력받아서 두 숫자의 합을 구해보자.
a, b = input('숫자 두 개를 입력하세요: ').split() # 입력받은 값을 공백을 기준으로 분리
print(a + b)
실행 결과
숫자 두 개를 입력하세요: 10 20 (입력)
1020
30이 나와야 하는데 1020이 나온다.
왜냐하면 input에서 받은 값은 문자열이고, 이 문자열은 split으로 분리해도 문자열이기 때문이다.
10+20의 결과가 30이 나오게 하려면 변수 a와 b를 정수로 변환해주어야 한다.
a, b = input('숫자 두 개를 입력하세요: ').split() # 입력받은 값을 공백을 기준으로 분리
a = int(a) # 변수를 정수로 변환한 뒤 다시 저장
b = int(b) # 변수를 정수로 변환한 뒤 다시 저장
print(a + b)
이렇게 해주면 30이 나온다.
split의 결과를 매번 int로 변환하려니 귀찮다.
이때는 map을 사용하면 된다.
map에 int와 input().split()을 넣으면 split의 결과를 모두 int로 변환해준다.
(실수로 변환 시에는 int 대신 float을 넣으면 된다)
a, b = map(int, input('숫자 두 개를 입력하세요: ').split(',')) # 입력받은 값을 콤마를 기준으로 분리
print(a + b)
이렇게 하면 10,20 을 입력했을때 a에 10, b에 20이 들어간다.
기억할 점은 input과 split의 결과는 문자열이므로 숫자 계산 시에는 int, float를 변환 해 주어야 하고 map을 사용하면 편리하다.