본문 바로가기
목차
Python

[Python] input 함수 사용하여 사용자 입력받기.

by ds31x 2023. 10. 10.
728x90
반응형
Python의 input() 함수는
표준 입력 스트림(stdin)으로부터 데이터를 입력받는 함수

Terminal에서 수행되는 CLI (Command Line Interface) 프로그램은

  • 입력을 stdin (표준 입력, standard input)에서 받아드리고
  • 출력은 stdout (표준 출력, standard output)에서 수행함.

stdoutstdin은 일종의 file stream이며

데이터를 해당 stream에 흘려보내거나 흘려받아서 출력과 입력이 이루어짐.

 

 A stream is a fairly abstract, high-level concept
representing a communications channel 
to a file, device, or process.

2024.09.11 - [CE] - [CE] Stream이란

 

[CE] Stream이란

Stream:데이터를 연속적으로 흐르는 방식으로 처리한다는 개념으로,데이터의 입출력을 일종의 bit (or byte) 들의 흐름으로 여겨서 처리하는 것으로 생각하고이와 같은 방식으로 I/O가 이루어지는 대

ds31x.tistory.com

 

다음의 url에서 python에 대한 부분을 살펴볼 것.

https://dsaint31.me/mkdocs_site/CE/ch10/ce10_2_04_stdio/#standard-io-library_1

 

BME

I/O Stream 과 Standard I/O Library 1. Stream 이란? 스트림(stream) 이라는 개념은 데이터의 흐름을 의미하며, 이를 비트 또는 바이트의 연속으로 생각할 수 있음. 종종 bit stream 또는 byte stream 이라고도 불림.

dsaint31.me


input() 함수

Python에서는 input()함수를 제공하여 사용자로부터 쉽게 입력을 받아들임.

a = input()
b = input('Enter your input:')

위의 코드는 간단하게 input()함수의 사용법을 보여줌.

  • 첫번째 라인은 input()함수가 호출되면 아무 출력이 없이 사용자의 입력을 대기 (blocking mode로 동작)하며,
    사용자가 입력하고 엔터를 치면 해당 입력값을 variable a에 할당한다.
  • 두번째 라인은 input()함수에 문자열 argument를 주었는데,
    해당 문자열을 prompt 문자열이라고 부르며 이 문자열이 출력되고 나서 사용자의 입력을 대기한다.
    이처럼 prompt 문자열을 지정하는 방식이 보다 권장된다.
    이 역시 사용자가 문자열을 입력하고 엔터를 치면 해당 입력값이 b에 할당됨.

 


반환값과 type casting의 중요성

주의할 것은 input()반환값은 항상 문자열이기 때문에 이를 int, float로 바꾸기 위해선 해당 문자열로부터 변환처리를 해주어야 함.

 

각 numeric type에서 문자열로부터 생성하는 방법을 이용해야함. 다음을 참고.

a = int(input('Enter your integer input:'))
f = float(input('Enter your float input:'))
  • 주의할 점은 입력된 문자열이 numeric type으로 변환이 불가한 경우, ValueError가 발생함.
  • exception handling이 필요함.

여러 값의 입력을 한번에 처리하기

input()함수가 반환하는 것이 string(문자열)이므로
str의 method인 split 등을 통해 공백문자나 separator (or delimiter) 문자를 통해
복수개의 입력을 한번에 받을 수도 있음.

 

다음 예제를 참고하라.

a, b, c = input('Enter your three inputs (delimiter is space):').split()
print(f'[{a}]')
print(f'[{b}]')
print(f'[{c}]')
a, b, c = input('Enter your three inputs (delimiter is comma):').split(',')
print(f'[{a}]')
print(f'[{b}]')
print(f'[{c}]')
  • 주의할 점은 이 방식은 unpacking을 이용하기 때문에 반드시 입력되는 변수의 숫자를 맞게 입력해야함.
  • 변수의 숫자와 입력한 값들의 갯수가 맞지 않으면 ValueError가 발생함.

가변길이 입력 처리 방식

다음과 같이 하나의 list로 받으면 여러 가변적인 갯수를 받을 수 있다는 장점이 있지만,

사용자가 잘못 입력한 경우에 error가 발생하지 않기 때문에

사용자에게 이같은 경우 체크하여 잘못 입력했음을 알려줘야 함.

t = input('Enter your three inputs (delimiter is space):').split()
print(t)

같이보면 좋은 자료들

https://dsaint31.me/mkdocs_site/CE/ch10/ce10_2_04_stdio/#standard-io-library_1

 

BME

I/O Stream 과 Standard I/O Library 1. Stream 이란? 스트림(stream) 이라는 개념은 데이터의 흐름을 의미하며, 이를 비트 또는 바이트의 연속으로 생각할 수 있음. 종종 bit stream 또는 byte stream 이라고도 불림.

dsaint31.me


2024.07.24 - [Python] - [Python] 사용자와 상호작용: 입력받기: input, argv, and sys

 

[Python] 사용자와 상호작용: 입력받기: input, argv, and sys

input() 함수 사용하기2023.10.10 - [Python] - [Python] input 함수 사용하여 사용자 입력받기. [Python] input 함수 사용하여 사용자 입력받기.Python의 input() 함수는표준 입력 스트림(stdin)으로부터 데이터를 입

ds31x.tistory.com


 

 

 

728x90