문제
입력 받은 대로 출력하는 프로그램을 작성하시오.
입력
입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않는다.
출력
입력받은 그대로 출력한다.
과정
처음에는 반복적으로 input()으로 입력을 받아 입력이 들어오지 않으면 break으로 반복문을 빠져나가게 만들면 되지 않을까 생각해서 아래와 같이 코드를 작성했다.
for i in range(100):
str = input()
if(str == None):
break
else:
print(str)
그런데 EOFError가 떠서 찾아보니 파이썬에서는 입력이 끝나면 EOF를 반환하는 게 아니라 EOFError
가 발생했다.
최종 코드
for i in range(100):
try:
print(input())
except EOFError:
break
EOFError를 잡아주기 위해 try catch 구문을 사용했다.
Enhanced
import sys
lines = sys.stdin.readlines()
for line in lines:
print(line, end="")
또 다른 방법으로는 sys.stdin.readlines 함수를 사용할 수 있었다. readlines
함수는 입력을 한 줄씩 전부 받아온다. 혹은 read
함수로 입력을 하나의 문자열로 통째로 받아와 넣을 수도 있다. 이 경우에는 print(sys.stdin.read())
이렇게 한 줄로 코드가 끝난다.