Bunny Code
[Python] - 20) 예외 처리(조건문 활용, try except 구문) 본문
여태까지 파이썬을 공부하면서 여러 오류들을 보셨을 겁니다.
오류는 크게 '구문 오류' 와 '예외 오류(런타임 오류)' 로 나뉘는데 두 가지가 무엇인지 먼저 알아볼게요.
1) 구문 오류 = 프로그램 자체가 실행되지 않는 오류
예시 :
print("구문 오류")
print("프로그램이 실행 자체가 안되는 구만"
위와 같이 일부러 두 번째 print 구문의 괄호를 작성하지 않으면 아래와 같은 오류가 발생합니다.
저기 보이는 SyntaxError 라고 불리는 것은 '구문 오류'를 의미합니다.
첫 번째 작성된 올바른 print 구문도 실행되지 않은 것을 확인할 수 있습니다.
그렇다면 '예외 오류' 는 어떨까요?
2) 예외 오류(런타임 오류) = 프로그램이 일단 실행된 다음, 실행 중에 발생하는 오류
예시 :
print("프로그래밍 일단 시작되었구나")
print(x)
위와 같이 일부러 정의되지 않는 x 를 print 하는 코드를 작성하면 아래와 같은 오류가 발생합니다.
첫 번째 print 구문은 실행이 되고 두 번째 구문에서 오류가 생긴 것을 확인할 수 있습니다.
이렇게 프로그램이 실행은 되지만 실행 된 후의 오류를 예외 혹은 런타임 오류라고 합니다.
이렇게 두 가지 오류 모두 코드 작성을 수정하면 바로 잡을 수 있지만, 경우에 따라 프로그램이 복잡해지면 예외를 처리하면 편한 경우가 생깁니다. (예외가 발생하지만 예외를 처리함으로서 정상적인 코드가 실행되도록 함, 말이 복잡하지만 예시를 통해 보면 이해가 수월해요!)
이제부터 예외 처리 방법에 대해 다룰건데
첫 번째로 예외 처리 방법으로 조건문을 한번 사용해봅시다!
바로 예시 볼게요! (가속도와 시간이 주어졌을 때, 속도와 거리를 구하는 코드)
input_1,input_2 = int(input("가속도 입력 >")),int(input("시간 입력 >"))
print("등가속도 운동할 때")
print("가속도 :", input_1)
print("속도 :", input_1 * input_2)
print("거리 :", input_1*input_2**2/2)
정상적으로 숫자를 입력하면 다음과 같이 코드가 잘 실행됩니다.
하지만, 정수를 입력한 것이 아니라 문자열을 입력했을때는???
위와 같은 오류가 발생하게 됩니다.
이를 '정수로 입력하지 않았을 때'를 조건으로 구분해서, 해당 상황일 때 다른 처리를 하도록 해 예외를 처리해보겠습니다!
input_1,input_2 = input("가속도 입력 >"),input("시간 입력 >")
if input_1.isdigit() and input_2.isdigit() :
num_1,num_2 = int(input_1),int(input_2)
print("등가속도 운동할 때")
print("가속도 :", num_1)
print("속도 :", num_1 * num_2)
print("거리 :", num_1 * num_2 ** 2 / 2)
else :
print("정수만 가능해요. 다시 입력해주세요")
위의 실행 화면을 보면 정수가 아닌 것을 입력했을 때 예외가 처리된 것을 확인할 수 있습니다.
두 번째로 try except 구문을 사용하여 예외 처리하는 방법을 알아보겠습니다.
try :
<예외가 발생할 가능성이 있는 코드>
except :
<예외가 발생했을 때 실행할 코드>
예시 :
try 안의 구문을 실행해보고 실행 되지 않는 경우 except 구문을 실행하라!
이런 의미로 받아들이니 저는 이해가 수월했어요!!
try except 구문을 잘 알고 있다면 이는 코드의 활용 방법에도 다양하게 적용될 수 있습니다!
예를 들어, 주어진 리스트에서 숫자로 변환되는 것들로만 이루어진 새로운 리스트를 만들어보겠습니다!
list_1 = ["123", "313", "515", "918", "나는 문자열이지롱", "717"]
list_2 = []
for item in list_1 :
try :
float(item)
list_2.append(item)
except :
pass
print("{} 내부에 있는 숫자는".format(list_1))
print("{}입니다.".format(list_2)
'Hello Coding 파이썬' 을 참고하여 작성하였음.
'Python Basic' 카테고리의 다른 글
[Python] - 22) 예외 객체, 예외 구분하기 (0) | 2020.08.27 |
---|---|
[Python] - 21) 예외 처리(try except else finally) (0) | 2020.08.26 |
[Python] - 19) 파일 처리, with 구문 (0) | 2020.08.24 |
[Python] - 18) map(), filter() & 람다(lambda) (0) | 2020.08.18 |
[Python] - 17) 튜플 (Tuple) (0) | 2020.08.18 |