[Python] 파이썬 input 입력 조건, 숫자만,여러개, 문자열 입력 방법 예제 및 총정리
개발자는 사용자와 상호작용을 하기위해 사용자부로터 입력을 요청하여 입력받은 값을 토대로 다음 작업을 진행할 수 있죠. 파이썬에서는 사용자가 입력할 수 있는 기능을 input()함수로 제공하고 있습니다.
파이썬 스크립트 내에 input()함수가 실행되면 사용자가 입력할 때까지 프로그램의 흐름이 중지됩니다.
■기본적인 사용법
val = input("아무거나 입력하세요:")
print(f'입력된 값: {val}ttt입력된 값의 자료형: {type(val)}')
#실행결과
아무거나 입력하세요:4
입력된 값: 4 입력된 값의 자료형: <class 'str'>
아무거나 입력하세요:한글
입력된 값: 한글 입력된 값의 자료형: <class 'str'>
뭔가 이상한 부분을 찾으셨나요? input()함수는 기본적으로 입력받은 값을 문자열(str)로 처리하고 있습니다. 숫자를 입력해도 문자열이 되기 때문에 정수형 자료형으로 형변환(int(val)을 하거나 입력받을 때부터 정수형으로 입력받도록 해야합니다. 문자열을 정수로 형변환하기 위해서는 int()함수를 사용하며, 반대로 숫자를 문자열로 형변환하기위해서는 str()함수를 사용합니다.
■정수형 타입(숫자만)으로 입력 받는 방법
int()함수를 사용하여 input함수를 묶어줍니다.
val = int(input("아무거나 입력하세요:"))
print(f'입력된 값: {val}ttt입력된 값의 자료형: {type(val)}')
#실행결과
아무거나 입력하세요:3
입력된 값: 3 입력된 값의 자료형: <class 'int'>
만약 문자를 입력하게되면 오류가 발생됩니다. a라는 알파벳을 입력한 결과입니다. invalid literal for int() with base 10:’a’
아무거나 입력하세요:a
Traceback (most recent call last):
File "C:pythonWorkspacemain.py", line 1, in <module>
val = int(input("아무거나 입력하세요:"))
ValueError: invalid literal for int() with base 10: 'a'
■실수형(float)으로 입력 받는 방법
float()함수를 사용하여 input()함수를 묶어줍니다.
val = float(input("아무거나 입력하세요:"))
print(f'입력된 값: {val}ttt입력된 값의 자료형: {type(val)}')
#실행결과
아무거나 입력하세요:3.52
입력된 값: 3.52 입력된 값의 자료형: <class 'float'>
아무거나 입력하세요:3
입력된 값: 3.0 입력된 값의 자료형: <class 'float'>
■한 번에 여러개의 입력을 받는 방법
split()함수를 사용합니다. 입력할때 공백을 주면 여러개 입력된 것으로 간주합니다.
val1, val2 = input("아무거나 입력하세요:").split()
print(f'입력된 값: {val1}ttt입력된 값의 자료형: {type(val1)}')
print(f'입력된 값: {val2}ttt입력된 값의 자료형: {type(val2)}')
#실행결과
아무거나 입력하세요:10 ab
입력된 값: 10 입력된 값의 자료형: <class 'str'>
입력된 값: ab 입력된 값의 자료형: <class 'str'>
2개의 값을 입력받지만 그 이상 혹은 그 이하를 입력하는 경우 오류가 발생됩니다.
ValueError: too many values to unpack (expected 2)
아무거나 입력하세요:30 ab30 505
Traceback (most recent call last):
File "C:pythonWorkspacemain.py", line 1, in <module>
val1, val2 = input("아무거나 입력하세요:").split()
ValueError: too many values to unpack (expected 2)
Process finished with exit code 1
ValueError: not enough values to unpack (expected 2, got 1)
아무거나 입력하세요:21
Traceback (most recent call last):
File "C:pythonWorkspacemain.py", line 1, in <module>
val1, val2 = input("아무거나 입력하세요:").split()
ValueError: not enough values to unpack (expected 2, got 1)
■입력값 분리하는 기준을 공백에서 다른 것으로 변경
split()를 사용하여 여러개의 값을 입력받을 때 , 원하는 분리 기준자를 설정할 수 있습니다.
val1, val2 = input("아무거나 입력하세요:").split(",")
print(f'입력된 값: {val1}ttt입력된 값의 자료형: {type(val1)}')
print(f'입력된 값: {val2}ttt입력된 값의 자료형: {type(val2)}')
#실행결과
아무거나 입력하세요:10 22, hello world
입력된 값: 10 22 입력된 값의 자료형: <class 'str'>
입력된 값: hello world 입력된 값의 자료형: <class 'str'>
tlf실행결과를 보시는 것과 같이 입력값 분리 기준을 콤마(,)로 하였기 때문에 입력된 값에 공백이 있어도 하나의 문장으로 인식하게됩니다.
■input을 리스트(list)로 데이터를 입력 받는 방법
input_list = [x for x in input("아무거나 입력하세요(입력 구분자: 콤마(,)) :").split(",")]
print(f'입력된 값: {input_list}ttt입력된 값의 자료형: {type(input_list)}')
#실행결과
아무거나 입력하세요(입력 구분자: 콤마(,)) :hello, world, hello world, 1
입력된 값: ['hello', ' world', ' hello world', ' 1']
입력된 값의 자료형: <class 'list'>
■여러개의 input을 튜플(tuple) 자료형으로 데이터를 입력 받는 방법
input_tuple = tuple(int(x) for x in input("아무거나 입력하세요(입력 구분자: 콤마(,)) :").split(","))
print(f'입력된 값: {input_tuple}n입력된 값의 자료형: {type(input_tuple)}')
#실행결과
아무거나 입력하세요(입력 구분자: 콤마(,)) :1,2,3,4,5
입력된 값: (1, 2, 3, 4, 5)
입력된 값의 자료형: <class 'tuple'>
[파이썬 더 알아보기]