본문 바로가기
Algorithm/baekjoon

[백준] 10951번 A+B - 4 파이썬 (python)

by eoieiie 2024. 3. 8.

정답코드는 다음과 같다. 

while True:
    try:
        A, B = map(int, input().split())
        print(A+B)
    except:
        break

 

정답 비율이 30 프로대로 낮은 걸 볼 수 있는데, 보통 처음 제출 시 코드가 아래와 같기 때문이다. 

while True:
    A, B = map(int, input().split())
    print(A+B)

 

전혀 문제가 없어 보이지만, 이 문제는 우리가 "예외처리"를 할 수 있냐 없냐를 물어보는 문제이기 때문에 예외처리가 되어있지 않은 위 코드는 정답이 될 수 없다. 

오답코드는 입력이 주어지지 않거나 정수가 아닌 값이 입력되면 오류가 발생할 수 있다. 그리고 while True를 사용하였기 때문에 무한루프가 지속된다. 

정답코드는 위와 같은 예외들을 처리하기 위해 try를 사용하여 먼저 예외가 발생할 수 있는 코드를 작성한다.

try:
    A, B = map(int, input().split())
    print(A+B)

 

 

그 다음은 except를 이용하여 예외가 발생했을 때 처리하는 코드를 작성한다.  

except:
    break

 

 

try와 except의 일반적인 사용 방법은 다음과 같다:

try:
    x = int(input("숫자를 입력하세요: "))
    result = 10 / x
    print("결과:", result)
except ZeroDivisionError as e:
    print("0으로 나눌 수 없습니다.", e)
except ValueError as e:
    print("올바른 숫자를 입력하세요.", e)

 

 

다중으로 예외를 처리하는 방법도 존재한다:

try:
    # 예외가 발생할 수 있는 코드
except (예외1, 예외2) as 예외변수:
    # 예외가 발생했을 때 처리하는 코드

 

댓글