이 문제의 목적은 문자열을 올바르게 입력받고 파일의 끝 ( EOF )을 올바르게 판단하는 법을 연습하는 것.
● 문제 풀이 :
두 개의 수를 입력받는데 공백으로 구분하여 두개의 변수에 각 각 값을 입력 받습니다.
그 다음, 입력 받은 두 개의 수를 합하여 화면에 출력.
여기서 주의 해야 할 점은 더이상 값을 입력 받지 못하였을때 프로그램이 오류를 출력하지 않고,
정상적으로 종료되어 한다는 점입니다.
테스트 할 때, 더 이상 입력할 값이 없을 경우 프로그램을 종료 하는 방법은
윈도우는 ( ctrl + z ) / 맥, 리눅스 ( ctrl + d ) 입력.
해결책으로는
- 예외 처리를 하는 방법. ( while 문 )
- 예외 처리 없이 sys.stdin.readlines() 를 사용하는 방법 ( for 문 )
① 예외 처리를 사용하는 방법
- input() 를 사용했을 경우.
input() 같은 경우, 더이상 값을 읽어오지 못하게 되면 EOFError 가 발생하는데, 그러한 에러를 무시하고
프로그램 정상 종료.
while True:
try:
a,b = map(int,input().split())
print(a+b)
except EOFError:
break
- sys.stdin.readline() 을 사용했을 경우. ( sys.stdin.readlines() 와 다르니 주의 )
import sys
while True:
try:
a,b = map(int,sys.stdin.readline().split())
print (a+b)
except:
break
① 예외 처리 없이 sys.stdin.readlines() 를 사용하는 방법
- sys.stdin.readlines() 를 쓰게되면 여러번 문자열을 입력받아 저장하게 되는데
미리 저장되어있는 데이터로 반복문을 돌리기때문에 오류가 발생하지 않습니다.
import sys
lines = sys.stdin.readlines()
for line in lines:
a,b = map(int,line.split())
print (a+b)