Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 한 줄로 여러 값 입력받는 방법 총정리

C 언어에서는 scanf() 함수를 사용해 한 번에 여러 변수의 값을 입력받을 수 있습니다.

// 한 줄에서 세 개의 변수 읽기
scanf("%d %d %d", &x, &y, &z)

하지만 Python에는 아직 scanf()와 직접적으로 대응되는 함수가 없습니다. 대신 Python은 scanf() 형식 문자열보다 더 강력하고 유연한 정규 표현식(regular expression)을 제공합니다. 그렇다면 Python에서 사용자로부터 한 줄에 여러 값을 입력받으려면 어떻게 해야 할까요?

1. input() 메서드 활용하기

가장 기본적인 방법은 input() 메서드를 여러 개 연결하는 것입니다. 사용자가 한 줄에 걸쳐 여러 값을 순차적으로 입력할 수 있습니다.

>>> x, y, z = input(), input(), input()
40
30
10
>>> x
'40'
>>> y
'30'
>>> z
'10'

위 실행 결과를 보면, 세 개의 변수에 각각의 값이 한 줄씩 입력되어 성공적으로 할당된 것을 확인할 수 있습니다. 다만 이 방법은 입력받을 값의 개수만큼 input()을 반복해서 작성해야 하므로 코드가 길어지는 단점이 있습니다.

2. 리스트 컴프리헨션(List Comprehension) 활용하기

여러 개의 input() 호출을 피하고 코드를 간결하게 만들려면 리스트 컴프리헨션이나 map() 함수를 사용하는 것이 좋습니다.

>>> x, y, z = [int(x) for x in input().split()]
9 12 15
>>> x
9
>>> y
12
>>> z
15

위 코드에서는 입력받은 값들을 int()로 형 변환하여 정수형으로 저장했습니다. 만약 형 변환이 필요 없거나 문자열과 숫자가 섞여 있는 입력이라면, 다음과 같이 단순하게 작성할 수도 있습니다.

>>> x, y, z = [x for x in input().split()]
40 10 "hello"

이 경우 모든 값이 문자열 형태로 저장된다는 점에 유의하세요.

3. map() 함수 활용하기

사용자로부터 여러 값을 입력받는 또 다른 효율적인 방법은 map() 함수를 사용하는 것입니다. 특히 모든 입력값을 동일한 자료형으로 변환해야 할 때 매우 유용합니다.

>>> x, y, z = map(int, input().split())
40 54 90
>>> x
40
>>> y
54
>>> z
90

map(int, input().split())은 입력받은 문자열을 공백 기준으로 나눈 뒤, 각 요소에 int 함수를 적용해 정수로 변환합니다. 이 방식은 코드가 짧고 가독성이 좋아 실무에서도 널리 사용됩니다.

마무리

정리하면, Python에서 한 줄에 여러 값을 입력받는 방법은 크게 세 가지입니다. 간단히 여러 번 입력받을 때는 input()을 연속으로 사용하고, 자료형 변환이 필요하면 리스트 컴프리헨션이나 map() 함수를 활용하는 것이 좋습니다. 상황에 맞는 방법을 선택하면 더 깔끔하고 효율적인 코드를 작성할 수 있습니다.