본문 바로가기
Study/Python study

[Python(파이썬)] 다양하게 입력받기 [input(), sys.stdin.readline(), strip()]

by 파크영 2021. 12. 1.

1. input()

input()은 기본적인 파이썬 입력 방법이다. 

input으로 입력받으면 기본적으로 str 타입으로 저장된다. 

또한 list()를 사용하면 문자열을 하나하나 분리해 리스트로 만들어준다. 

>>> a = input()
abcde

>>> a
'abcde'

>>> list(a)
['a', 'b', 'c', 'd', 'e']

>>> test = input()
Hello Hi

>>> test
'Hello Hi'

>>> list(test)
['H', 'e', 'l', 'l', 'o', ' ', 'H', 'i']

 

나머지 input에 대한 설명은 아래 링크에 있다. 

 

 

[Python(파이썬)] 입력, 출력 (input(), print())

입력 - input() 파이썬에서는 기본적으로 input()을 사용하여 입력 받는다. >>> input() Hello # 출력 'Hello' >>> input() 123 # 출력 '123' 입력받은 값을 변수에 대입하기 >>> a = input() # 입력한 값을 a에..

young-library.tistory.com

 

 

 

2. sys.stdin.readline()

기본적으로 파이썬에서 입력받을 때 input을 사용한다.

하지만 알고리즘에서 input()을 사용하면 종종 시간 초과가 발생할 때가 있다. 

따라서 입력 값을 수 백, 천개 받을 때 입출력 속도를 위해 sys.stdin 함수를 사용해주는 것이 좋다. 

 

>>> import sys

>>> test = sys.stdin.readline()
(커서 깜빡거리면 입력)abcde

>>> test
'abcde\n'

 문자열 맨뒤에 개행문자('\n')가 기본으로 추가된다. 

 

 

  • 정수형으로 변환 - int()

입력을 받으면 기본적으로 문자열로 저장되기 때문에 int()를 사용해 정수형으로 형변환 해준다. 

>>> test2 = int(sys.stdin.readline())
123
>>> test2
123
>>> type(test2)
<class 'int'>

 

  • 두 개 이상 정수형으로 입력 받기 - map()

두 개 이상 정수형으로 입력받을 때 int()로 형변환 해주면 Error가 발생한다. 따라서 map()을 사용하여 int형으로 변환해야한다. 

>>> i, j = int(sys.stdin.readline().split())
10 20
Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    i, j = int(sys.stdin.readline().split())
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'

#------------------------------------------------------------------------------------
>>> i, j = map(int, sys.stdin.readline().split())
10 20

>>> i, j
(10, 20)

 

 

※ sys.stdin.readline()은 기본적으로 개행문자(줄바꿈 문자)를 포함하고 있는데 strip()을 사용해 이를 없앨 수 있다. 

import sys
sysinput = sys.stdin.readline
n, m = map(int, sysinput().split())

graph = [list(sysinput()) for _ in range(n)]
graph2 = [list(sysinput().strip()) for _ in range(n)]

print('graph: ', graph)
print('graph2: ', graph2)

 

# 입력
3 3
123
234
345
123
234
345

# 출력
graph:  [['1', '2', '3', '\n'], ['2', '3', '4', '\n'], ['3', '4', '5', '\n']]
graph2:  [['1', '2', '3'], ['2', '3', '4'], ['3', '4', '5']]

 

strip()을 해준 graph2에는 개행문자가 없음을 확인 할 수 있다. 

 

strip함수에 대한 설명은 아래 링크로

 

[Python(파이썬)] 파이썬 공백 제거 (strip, replace)

파이썬에서 문자열 공백을 제거하는 2가지 방법 1. 문자열.strip() 2. replace() 1. 문자열.strip() strip함수는 양쪽 끝에 있는 공백을 제거하는 함수이다. 양쪽 끝에 있는 공백을 제거한 후 공백을 제거한

young-library.tistory.com

 

댓글