Python 표준 입력의 기본과 응용 | 초보자를 위한 해설과 실전 활용 사례

1. 시작하기

Python으로 프로그램을 만들 때, 사용자로부터 입력을 받아 처리하는 “표준 입력”은 매우 중요합니다. 특히input() 함수를 사용하여 키보드로부터 데이터를 얻음으로써, 사용자와의 상호작용이 가능해집니다. 이 글에서는 Python 초보자를 위해, 표준 입력의 기본 사용법부터 응용 방법까지를 구체적인 예와 함께 설명합니다. 간단한 프로그램부터 응용적인 처리 방법까지 순차적으로 배울 수 있는 내용입니다.

2. Python 표준 입력의 기본적인 사용법

2.1 input() 함수란?

input() 함수는 사용자의 입력을 받아 문자열로 반환하는 함수입니다. 예를 들어, 다음 코드로 사용자의 이름을 받아 출력합니다.
name = input("이름을 입력해주세요: ")
print(f"안녕하세요, {name}님!")
이 코드에서는 input()으로 입력된 이름을 name에 저장하고, 인사 문장을 출력합니다.

2.2 숫자 데이터 입력 및 타입 변환

input()으로 얻어지는 데이터는 문자열이므로, 숫자로 다루고 싶을 경우 int()float() 함수를 사용해 타입 변환을 수행합니다.
age = int(input("나이를 입력해주세요: "))
print(f"당신은 {age}살이군요.")
이 예에서는 문자열을 정수로 변환하여 나이를 숫자로 출력합니다.
侍エンジニア塾

3. 여러 줄 표준 입력 처리

3.1 여러 줄 문자열 입력

여러 줄 입력을 받고 싶을 경우, for 루프와 리스트 내포 표기를 사용하면 효율적입니다. 예를 들어, 사용자에게 3개의 서로 다른 단어를 입력받는 경우의 코드는 다음과 같습니다。
words = [input(f"{i+1}번째 단어를 입력해주세요: ") for i in range(3)]
print(f"입력된 단어: {words}")
이 코드에서는 3줄 분량의 입력을 리스트에 저장하고, 출력합니다。

3.2 공백 구분으로 여러 입력

한 줄에 여러 데이터를 입력할 때는 split() 함수를 사용하여 공백 구분으로 할 수 있습니다. 다음 예에서는 사용자가 숫자를 공백으로 구분하여 입력하도록 하고, 이를 정수로 변환합니다。
numbers = list(map(int, input("숫자를 공백으로 구분하여 입력해주세요: ").split()))
print(f"입력된 숫자: {numbers}")
여기서는 map() 함수를 사용하여 입력된 숫자를 정수형으로 변환합니다. split()으로 구분된 입력을 효율적으로 리스트에 저장합니다。

4. 표준 입력의 응용: 파일 및 바이너리 데이터 처리

4.1 sys.stdin을 이용한 표준 입력 처리

sys.stdin을 사용하면, 표준 입력으로부터 데이터를 직접 읽어올 수 있습니다. 대량의 텍스트 데이터나, 커맨드 라인 인수로 전달된 파일 내용을 표준 입력으로 다룰 때 유용합니다.
import sys

data = sys.stdin.read()
print(f"받은 데이터: {data}")
이 코드에서는 표준 입력으로부터 전체 데이터를 읽어와 출력합니다.

4.2 바이너리 데이터의 간단한 처리

sys.stdin.buffer을 사용하면, 바이너리 데이터를 직접 처리할 수 있습니다. 이는 이미지 데이터나 바이너리 형식 파일을 다룰 때 유용합니다.
import sys

binary_data = sys.stdin.buffer.read()
print(binary_data)
이 코드에서는 표준 입력으로부터 바이너리 데이터를 읽어와 그대로 출력합니다.

5. 실용적인 사용 사례: 표준 입력을 활용한 문제 해결

5.1 표준 입력을 이용한 평균값 계산 프로그램

다음 프로그램은 표준 입력으로부터 정수를 받아 그 평균값을 계산하여 출력합니다. 이러한 처리는 대회 프로그래밍이나 데이터 처리에서 자주 사용됩니다.
N = int(input("입력할 숫자의 개수를 지정하세요: "))
numbers = list(map(int, input("숫자를 공백으로 구분하여 입력하세요: ").split()))
average = sum(numbers) / N
print(f"평균값은 {average} 입니다.")
이 프로그램은 먼저 숫자의 개수를 받아서, 이어서 공백으로 구분된 입력값을 리스트로 처리하고 평균값을 계산합니다.

5.2 입력이 종료될 때까지 데이터를 받는 프로그램

사용자가 빈 줄을 입력할 때까지 데이터를 계속 받아들이는 프로그램입니다. 특정 종료 조건을 설정함으로써 장기간의 입력 데이터 처리가 가능해집니다.
data = []
while True:
    line = input()
    if line == "":
        break
    data.append(line)
print("입력된 데이터: ", data)
이 예제에서는 빈 줄이 입력될 때까지 데이터를 계속 받아들이고, 최종적으로 모든 데이터를 출력합니다.

6. 자주 발생하는 오류와 그 대처법

6.1 ValueError의 대처법

숫자 입력 시, 사용자가 실수로 문자열을 입력하면 ValueError가 발생합니다. 이 오류를 피하기 위해서는 입력값을 검증하는 코드를 추가할 필요가 있습니다.
try:
    age = int(input("나이를 입력해주세요: "))
except ValueError:
    print("잘못된 입력입니다. 숫자를 입력해주세요.")

6.2 EOFError의 대처법

여러 줄 입력을 받을 때, 표준 입력의 종료를 나타내는 EOF(End of File) 오류가 발생할 수 있습니다. 이를 피하려면 종료 조건을 적절히 설정하는 것이 중요합니다.
import sys

for line in sys.stdin:
    if line.strip() == "":
        break
    print(line.strip())

7. 요약

Python에서 표준 입력을 사용하면 사용자와의 상호작용을 쉽게 구현할 수 있고, 보다 고급 프로그램을 만들 수 있게 됩니다. 기본적인input() 함수부터 파일 및 바이너리 데이터 처리까지 다양한 방법을 배웠습니다. 표준 입력 활용 방법을 이해하고 실천함으로써 프로그램의 유연성과 효율성이 향상됩니다.
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール