늘 조건문을 작성할 때는 if/else로 작성했기에 오류에 대한 예외처리를 해주는 try/except를 사용할 때는 흔하지 않았다.
하지만 백준 A+B-4 문제를 해결할 때는 try/except과정이 필수적으로 요구되었기에 다시금 들여다볼 수 있었다.
또한 input()과, sys.stdin.readline()의 구체적인 차이까지 다시 숙지했다.
1) input()과 sys.stdin.readline()
우선 input()과 달리 굳이 sys.stdin.readline()을 쓰는 이유는 많은 양의 데이터를 받아오는 상황에서 보다 효율을 높이기 위해 사용한다.
그래서 input() 한 단어로 간결하게 불러올 수 있는 것도 import sys: sys.stdin.readline()으로 받아오는 것이다.
하지만 한가지 알아야 하는 점은!
input()의 경우 빈 문자열이 입력될 때 EOFError를 발생시키지만
sys.stdin.readline()의 경우에는 빈 문자열이 입력된다고 하더라도 오류를 발생시키지 않고 그대로 빈 문자열을 출력시킨다는 차이가 있다.
import sys
## readline()
sys.stdin.readline()
## readlines()
sys.stdin.readlines()
부가적으로 readline()과 readlines()의 차이를 언급하자면
일반적으로 사용하는 readline()은 입력값을 한 번 받아온다.
하지만 readlines()는 그 파일에 들어있는 입력값을 모두 긁어오는 것이 차이라고 할 수 있다.
2) EOF?
EOF는 end of file의 약자로 문자열을 올바르게 입력받고 파일의 끝을 올바르게 판단하는 것을 의미한다.
즉 올바르지 않은 문자가 입력된 경우에 EOFError를 출력하게 된다.
이러한 오류가 나는 것을 예외처리 하기 위해서 try/except를 활용한다.
3) try/except를 활용한 문제풀이
문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어져 있다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
각 테스트 케이스마다 A+B를 출력한다.
# input() 활용
while True:
try:
print(sum(map(int, input().split())))
except:
break
# sys.stdin.readline() 활용
import sys
while True:
try:
print(sum(map(int,sys.stdin.readline().split())))
except:
break
try의 경우 작성된 코드처럼 실행이 되지만,
except의 경우 오류가 발생했을 시 멈추게 한다.
'python > 코딩테스트' 카테고리의 다른 글
[python] 이진탐색 라이브러리 bisect (0) | 2022.08.19 |
---|---|
[python] zip함수 정리 (0) | 2022.07.13 |
[python] 재귀함수 파헤치기 (0) | 2022.07.08 |