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() 함수부터, 파일이나 바이너리 데이터의 처리까지, 다양한 방법을 배웠습니다. 표준 입력의 활용 방법을 이해하고 실천함으로써, 프로그램의 유연성과 효율성이 향상됩니다.
年収訴求