파이썬 input() 함수 사용법|사용자 입력을 받는 원리
input() 함수란 무엇이며 언제 필요한가?
파이썬에서 input() 함수는 프로그램 실행 중 사용자가 직접 값을 입력할 수 있게 해 줍니다. 이 함수는 코드를 짤 때 정해두는 값이 아니라, 실행할 때마다 달라질 수 있는 데이터를 받을 때 반드시 필요합니다. 예를 들어, 이름, 숫자, 메뉴 선택 등 사용자의 선택이나 답변을 받아야 하는 프로그램에서 자주 쓰입니다.
가장 작은 input() 사용 예제
아래 코드는 input() 함수로 사용자가 직접 입력한 값을 받아 출력합니다. 입력값을 받을 때는 항상 문자열로 저장됩니다.
user_input = input("아무거나 입력하세요: ")
print("입력하신 내용:", user_input)이 코드는 실행하면 먼저 "아무거나 입력하세요: "라는 메시지를 띄웁니다. 사용자가 값을 입력하고 엔터를 치면, 그 값이 user_input 변수에 문자열로 저장되고, print()로 그대로 출력됩니다.
입력값의 자료형과 형변환
input() 함수가 반환하는 값은 항상 문자열(str)입니다. 숫자를 입력해도 문자열로 받아집니다. 만약 입력된 값을 숫자로 계산하고 싶다면 int()나 float() 같은 함수를 이용해 형변환을 해야 합니다
age = input("나이를 입력하세요: ")
print(age + 1) # 오류 발생!]
위 코드는 오류가 납니다. input()은 "25" 같은 문자열을 반환하므로, + 1 연산이 불가능합니다. 올바른 방법은 아래와 같습
age = input("나이를 입력하세요: ")
age = int(age) # 문자열을 정수로 변환
print(age + 1)]]
]
이렇게 하면 사용자가 25를 입력했을 때 26이 출력됩니다. 만약 소수점이 필요한 입력이라면 float()를 사용하면 됩니다.
실제 사용 예제: 여러 값 입력받기
여러 개의 값을 한 줄에 입력받아 각각 숫자로 변환하려면 split() 메서드와 map() 함수를 함께 사용할 수
numbers = input("두 숫자를 입력하세요(공백으로 구분): ")
a, b = map(int, numbers.split())
print("a + b =", a + b)3]]
]]
위 예제는 10 20처럼 두 숫자를 입력하면 a와 b에 각각 정수로 저장되어 합계가 출력됩니다. split()은 입력 문자열을 공백 기준으로 나눠 리스트로 만들어 줍니다.
초보자가 자주 하는 실수와 해결 방법
문자열을 숫자로 변환할 때 발생하는 오류
숫자가 아닌 값을 int()로 변환하면 ValueError가 발생합니다.
age = int(input("나이 입력: ")) # 사용자가 '스물다섯' 입력 시 오류_4]]
4]]
이런 경우, 숫자가 아닌 값을 입력하면 프로그램이 중단됩니다. 이를 방지하려면 try...except 구문으로 예외를 처리
try:
age = int(input("나이 입력 (숫자): "))
print("내년 나이:", age + 1)
except ValueError:
print("정확한 숫자를 입력해 주세요.")K_5]]
_5]]
이렇게 하면 숫자가 아닌 값을 입력해도 친절한 안내 메시지를 보여줍니다.
입력값 앞뒤의 공백 처리
입력값에 실수로 앞뒤에 공백이 들어가는 경우가 많습니다. strip()을 사용하면 앞뒤 공백을
name = input("이름을 입력하세요: ").strip()
print("안녕하세요,", name)CK_6]]
K_6]]
이렇게 하면 홍길동 처럼 입력해도 홍길동만 저장됩니다.
input() 함수의 경계 동작과 EOFError
사용자가 아무 값도 입력하지 않은 경우 input()은 빈 문자열을 반환합니다. 그러나 터미널에서 Ctrl+D(리눅스/macOS) 또는 Ctrl+Z(윈도우)로 입력을 종료하면 EO
try:
data = input("데이터를 입력하세요(종료: Ctrl+D/Z): ")
print("입력값:", data)
except EOFError:
print("입력이 종료되었습니다.")OCK_7]]
CK_7]]
이 예제는 입력이 정상적으로 들어오면 값을 출력하고, 입력이 강제로 종료되면 안내 메시지를 출력합니다.
핵심 정리와 연습 문제
input()함수는 항상 문자열을 반환하므로, 숫자나 다른 자료형으로 변환하려면int(),float()등을 사용해야 한다.- 입력값을 바로 연산에 사용할 때는 자료형을 꼭 확인하고, 오류가 날 수 있는 부분은
try...except로 안전하게 처리한다. - 여러 값을 동시에 입력받을 때는
split()과map()을 활용한다. - 입력값 앞뒤의 공백은
strip()으로 미리 지우면 예기치 않은 오류를 줄일 수 있다.
연습 문제
- 사용자로부터 이름과 나이를 한 줄에 입력받아 "OOO님의 내년 나이는 N살입니다."라고 출력하는 코드를 작성해 보세요.
- 힌트: 입력값을
split()으로 나누고, 나이는 정수로 변환하세요. - 사용자가 세 개의 정수를 한 줄에 입력하면 각각 제곱한 값을 공백으로 구분하여 한 줄로 출력하는 코드를 만들어 보세요.
- 힌트:
map()과**연산자를 활용해 보세요. - 입력값이 숫자가 아닐 때 "숫자만 입력하세요."라는 안내 메시지를 출력하고, 숫자라면 2배로 만들어 출력하는 코드를 작성해 보세요. (예외처리 사용)