동시에 여러 값 입력받기
사용자로부터 입력받는 값이 많다면 그만큼 다채로운 결과를 도출할 수 있다. 다만, 앞서 이야기한 input 명령어만 활용하기에는 코드도 길어지고 사용자에게도 번거로운 과정을 겪어야 하는 경험이 된다. 여러 값을 동시에 입력받는 방법을 알아보자.
split 활용하기
print에서 sep, end 인자를 활용했던 것처럼 input에서는 split 인자를 활용해 여러 값을 입력받을 수 있다. 각각의 입력값은 공백으로 구분한다.
변수1, 변수2, ... = input().split()
공백으로 구분한 5와 3이 각각 num1과 num2에 저장되는 것을 확인할 수 있다. 그리고 세 번째 실행한 명령어에서 출력된 결과가 8이 아닌 53이라는 것을 통해, num1과 num2에 저장된 5와 3이 숫자가 아닌 문자라는 것을 알 수 있다. 문자열이 필요했다면 상관 없겠지만 정숫값이 필요하다면 형변환이 필요하다.
split의 정수형 변환
앞서 배운 int 명령어를 중첩하여 실행해보았더니 에러가 발생했다. 에러 메시지를 따라가면 맨 뒤에 not 'list'라고 되어있는데, split으로 구분되는 문자는 단순한 문자열 자료가 아니라 리스트 형태의 자료로 저장이 된다. 그러니까 공백으로 구분된 5와 3은 사실 리스트 형태인 [5, 3]으로 어딘가에 저장된 것. 그런데, int형 변환은 list를 변환하지 못한다.. 그래서 에러가 발생한 것이다.
map 활용하여 여러 값 정수형으로 입력받기
변수1, 변수2, ... = map(int(), input().split())
map 함수는 복수의 값을 다루는 자료형의 요소들을 특정 함수에 대응시켜준다. 위에서 실패한 명령어를 생각해보면 map 함수를 활용함으로써 split으로 인해 리스트로 변형된 복수의 값이 int 함수에 각각 대응되도록 해줄 수 있다.
명령어가 작동하는 순서를 따라가보자.
1) 사용자에게 5와 3을 입력는다.
2) 5와 3을 split으로 구분하여 리스트를 생성한다. ([5, 3], 각 요소는 문자형)
3) map 함수가 리스트의 요소인 문자형 5와 3을 각각 int 함수에 대응시킨다.
4) 리스트의 각 요소가 정수형으로 변환된다. ([5, 3], 각 요소는 정수형)
5) 리스트의 요소를 순서대로 좌변의 변수에 대응시킨다.
정상적으로 8이 연산된 것을 보면, num1과 num2에 입력된 5와 3이 정수형으로 형변환 됐음을 알 수 있다.
'IT일반' 카테고리의 다른 글
파이썬 프로그래밍 - 코드 스타일, 코딩 규칙의 기초 (0) | 2024.12.03 |
---|---|
키크론X한컴타자 이벤트 참여 (0) | 2024.11.24 |
파이썬 프로그래밍 - 입출력(3), 입력 명령어 input, 형변환 명령어 int, float, str (1) | 2024.10.15 |
티스토리 오디세이 스킨, 블로그 상단 이미지 배너 없애기(2) (2) | 2024.10.13 |
티스토리 오디세이 스킨, 블로그 글 상단 이미지 배너 없애기(1) (1) | 2024.10.13 |