100세까지 코딩
[백준] 10951번 A+B (파이썬) + 예외 처리 본문
문제
나의 생각
- try-except를 써서 파일의 끝을 판단하는 연습 문제이다.
나의 풀이 (EOFError 처리)
while True:
try:
A, B = map(int, input().split())
print(A + B)
except EOFError:
break
- input()함수는 EOF를 만나면 EOFError를 발생시킨다.
나의 풀이2 (except로 모든 예외 처리)
while True:
try:
A, B = map(int, input().split())
print(A + B)
except :
break
- except만 사용하면 모든 에러에 대한 처리를 해준다.
나의 풀이3 (sys.stdin.readline()으로 ValueError 처리)
import sys
while True:
try:
A, B = map(int, sys.stdin.readline().split())
print(A + B)
except ValueError:
break
- sys.stdin.readline()은 에러 발생 안시키고 개행문자를 넘긴다. 그러나 A,B에 정수형 숫자 2개가 와야한다.
- 즉, ValueError 발생
나의 풀이4 (sys.stdin.readlines()로 파일 전체 가져오기)
import sys
lines = sys.stdin.readlines()
for line in lines:
A, B = map(int, line.split())
print(A+B)
- sys.stdin.readlines()로 파일을 한번에 다 읽기
참고
while True:
try:
A, B = map(int, input().split())
print(A + B)
except ValueError:
break
- 파일을 읽으면 input()은 EOFError를 발생시키므로 ValueError를 넣으면 런타임에러가 뜬다.
'코딩테스트 > 파이썬' 카테고리의 다른 글
[백준] 10871번 X보다 작은 수 (파이썬) (0) | 2024.01.07 |
---|---|
[백준] 10807번 개수 세기 (파이썬) (0) | 2024.01.07 |
[백준] 15552번 빠른 A + B (파이썬) + 입력 받기(sys.stdin.readline) (0) | 2024.01.07 |
[백준] 25314번 코딩은 체육과목 입니다 (파이썬) (0) | 2024.01.07 |
[백준] 2739 구구단 (파이썬) + 파이썬 포맷팅 (0) | 2024.01.06 |