입력 받은 대로 출력하는 프로그램을 작성하시오.
입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않는다.
입력받은 그대로 출력한다.
import sys
while True:
try:
str = sys.stdin.readline().rstrip()
print(str)
except:
break
처음에는 코드가 정상적으로 동작하기에 잘 되겠거니 생각했지만 출력 초과라는 오류 문구가 생겨서 문제를 틀리고 말았다.
이게 왜 틀린걸까? 라고 생각하고 찾아 봤는데
sys.stdin.readline().rstrip()
위 코드는 input() 함수처럼 입력을 받는 코드지만 입력이 없더라도 에러가 발생하지 않기에 반복문을 빠져나오지 못한 것이다.
sys.stdin.readline().rstrip() 코드는 입력이 없으면 에러가 아니라 그냥 빈 문자를 반환하기에 실제도 에러로 받아드리지 못한 것이다.
그렇기에 그냥 input() 함수를 사용하거나
while True:
try:
str = input()
print(str)
except:
break
sys.stdin.readline().rstrip() 코드를 사용하려면 빈 문자를 인식하도록 조건문을 사용하면 된다.
import sys
while True:
str = sys.stdin.readline().rstrip()
if str != '':
print(str)
else:
break