일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Baekjoon
- c언어
- 구현
- 입문
- 10926
- 친절한 설명
- HTML
- 꾸준히
- VS
- C Programming
- 문제풀이
- 파이썬
- 초보
- greedy
- 심화1
- 백준
- 정리
- Beakjoon
- 그리디
- C
- C 언어
- 알고리즘
- Python
- 코드엔진
- CSS
- 설명
- Implemention
- 문자열
- 10807
- implement
- Today
- Total
안경잡이 구루루
백준 10951( A+B-4 ) [ python ]( 오답노트 ) 본문
문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어져 있다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
각 테스트 케이스마다 A+B를 출력한다.
나( 오답 ):
while True:
a,b = map(int, input().split())
0<a and 10>b
if a == False and b == False:
break
print(a+b)
오답으로 쓴 코드는 위와 같다
2020/05/16 - [파이썬(Python)/문제풀이(백준,BaekJoon)] - 백준 10952 ( A+B -5 )[ python ]
같은 종류의 문제인 위 문제는 종결조건이 명확히 존재하지만 이 문제의 경우 종결조건이 명확히 나오지 않았다.
그래서 값이 존재 하지 않는다는 의미인 False를 사용했지만 런타임 에러가 일어났다.
값이 입력되지 않으면 while문이 종결되는 방법을 구하려고 했다.
나( 정답 )
while True:
try:
a, b = map(int, input().split())
0<a and b<10
print(a+b)
except:
break
완성된 코드는 위와 같다.
내가 틀렸던 원인들을 인터넷에서 검색하며 분석해본 결과를 먼저 알 필요가 있다.
어떤 코드가 동작하는 과정에서, 오류가 발생할 수도 있고 발생하지 않을 수도 있다. 이 때 오류를 컨트롤하기 위해 사용하는 것이 try-except-else-finally 구문이다.
파이썬에서 정보를 입력받을때 어디가 끝인지를 확인하는 기능이 자체적으로 없어서 만약에 예외처리를 하지 않는다면 이 문제에서는 계속적으로 인풋을 받는다.
몇개의 테스트 케이스가 주어졌는지 알 수 없는 경우 입력을 EOF까지 받으면 된다.
(출처: https://woogong2.tistory.com/36 [UC공대 출신 미국에서 살아남기])
(출처:https://www.acmicpc.net/board/view/43198)
(출처: https://sozerodev.tistory.com/30 )
그래서 예외처리를 사용해서 문제를 접근해야한다.
while True:
try:
a, b = map(int, input().split())
0<a and b<10
print(a+b)
try 부분에는 실행할 부분의 코드를 입력한다.
입력값 a,b를 빈칸을 기준으로 받고 각각 조건에 맞게 범위를 설정해 준다.
except:
break
except 부분에는 예외가 일어났을 때 처리하는 코드를 입력한다.
여기에 경우 입력값이 없을 경우 while 반복문을 빠져나온다.
다른사람:
https://sinb57.tistory.com/entry/Python-3-10951-A-B-4
import sys
for line in sys.stdin:
a,b = map(int, line.split())
print(a+b)
완성된 코드는 위와 같다.
sys 모듈을 inport해서 문제를 해결했다.
왜냐하면 sys.stdin은 ^Z를 입력받으면 종료해주기 때문에 위 처럼 사용했다.
'파이썬(Python) > 문제풀이(백준,BaekJoon)' 카테고리의 다른 글
백준 10039 ( 평균 구하기 ) [ python ] (0) | 2020.05.21 |
---|---|
백준 1110 ( 더하기 사이클 )[ python ] (0) | 2020.05.19 |
백준 10952 ( A+B -5 )[ python ] (0) | 2020.05.16 |
백준 10871 ( X보다 작은 수 ) [ python ] (0) | 2020.05.14 |
백준 2439( 별 찍기 -2 ) [ python ] (0) | 2020.05.12 |