[Python3] stdin vs input

SangHun·2021년 4월 18일
0
post-custom-banner

0. stdin을 쓰는 이유

기존 input() 방식은 속도가 느리다.

그런데 그냥 느린게 아니다.

하나의 긴 문자열을 입력 받는 경우에는 속도 차이가 거의 없다.

stdin은 여러 라인의 문자열을 입력할 때 더 빠른 것이다.

입력 문자열이 길어도 몇 줄 안되면 input()을 쓰자.

1. stdin 만 사용하는 경우

for line in sys.stdin:
    print(int(line.split()[0]) + int(line.split()[1]))

위처럼 for문의 iteratorsys.stdin을 사용하면

^Z 가 입력되기 전까지 계속 입력을 반복한다.

2. stdin.readline

그냥 입력을 한 줄만 받고 끝낸다.

여러줄을 입력받으려면 몇 줄을 입력받는지 알아야 한다.

단, 입력받은 문자열의 맨 뒤에 \n 가 붙어있기 때문에 rstrip('\n')을 사용해주자.

rstrip('abc')는 문자열의 끝 부분에서

lstrip('abc')는 문자열의 시작 부분에서부터

인자로 전달된 문자를 지워준다.

만약, 정해진 반복 횟수가 없이 계속 입력 받아야 하는 경우에는?

위에서 사용된

for line in sys.stdin:
    print(int(line.split()[0]) + int(line.split()[1]))

이외에도

try:

    a, b = map(int, input().split())

    print(a+b)

except:

    exit()

같은 방법도 쓸 수 있다.

profile
개발괴발자
post-custom-banner

0개의 댓글