본문 바로가기

PYTHON/혼공파

[혼공챌린지] 혼공파 5주차 파이썬 기본미션, 선택미션

728x90

벌써 5주차.. 시간이 너무 빨리간다

 

이번주에 공부할 내용은 구문오류와 예외!

C++이든 JAVA든 맨날 구문 오류 공부할 때쯤엔 지쳐서 제대로 안했는데 이번에 제대로 공부한다..,.진짜 공부안했구나 나ㅜ

 

 

오류의 종류

- 프로그램 실행 전에 발생하는 오류 = 구문 오류(syntax error)

- 프로그램 실행 중에 발생하는 오류 = 예외(exception) 또는 런타임 오류(runtime error)

 

 

구문 오류(syntax error)

괄호의 개수, 들여쓰기 문제 등으로 인해 프로그램이 실행되기도 전에 발생하는 오류를 말한다.

예시

이렇게 코드를 작성하고 실행을 하면

이런 결과가 나온다

파란색으로 된 글자를 보면 SyntaxError가 나타난 것을 알 수 있다!

 

 

 

예외(exception)

위 문장들을 실행해보면,

339줄은 실행이 되었는데 340줄은 NameError가 난 것을 알 수 있다. list_2가 정의되지 않아서 나타나는 것으로 list_2를 만들면 정상적으로 실행이 될 것이다!

 

 

기본 예외 처리

 

예외를 해결하는 것을 예외 처리라고 한다.

이런 코드가 있을 때 정수를 입력하면 정상적으로 작동을 하지만, 정수가 아닌 것을 입력하면 어떻게 될까?

정수 대신 소수를 입력해보았더니 ValueError가 나오면서 뭐라뭐라 한다

코드는 실행이 잘 되었는데 n을 입력 받는 상황에서 오류가 난 것이다. 이럴 때를 대비해 예외 처리를 해야한다.

 

 

- 조건문을 사용하는 방법

조건문을 사용해 예외 처리를 한 코드

이런 코드가 있다고 해보자(책에 있는 예제!)

정수를 입력하면 그것이 반지름이 되어서 원의 반지름, 원의 둘레, 원의 넓이를 계산해 출력하는 코드이다

제대로 정수를 입력했을 때

정수를 제대로 입력하면 이런 식으로 결과가 잘 나오는데 정수가 아닌 것을 입력하면 아마 오류가 날 것이다.

하지만 314줄에 else로 예외처리를 해놓았다.

정수가 아닌 것을 입력했을 때

즉, 정수를 입력하면 if문으로 들어가 원하는 결과가 나오도록 실행이 되도록 하고

정수를 입력하지 않으면! else문으로 들어가 "정수를 입력해야한다"는 문장이 나오도록 예외처리를 한 것이다!

 

 

- try 구문을 사용하는 방법

 

try except 구문

try :

     예외가 발생할 가능성이 있는 코드

except :

    예외가 발생했을 때 실행할 코드

 

try except 구문
정수가 아닌 것을 입력했을 때 결과

 

l이라는 리스트에서 숫자만 빼내어 ln이라는 리스트에 넣는 코드이다

331줄 except를 보면 pass로 해놓았는데 프로그램이 강제 종료 되는 것을 막자는 의미로 except 구문에 pass를 넣어 일단 실행시키고 보는 것이다.

 

 

try except else 구문

try :

     예외가 발생할 가능성이 있는 코드

except :

    예외가 발생했을 때 실행할 코드

else :

    예외가 발생하지 않았을 때 실행할 코드

 

try except else 구문
정수를 제대로 입력했을 때 결과
정수가 아닌 것을 입력했을 때 결과

try에 예외가 발생할 가능성이 있는 코드를 넣고 나머지를 else로 빼낸 것이다.

전처럼 try에 모두 넣어도 되지만 else가 더 깔끔해보인다는 사람도 있다.. 가독성 때문에 쓰는 거라고 생각한다!

 

책에서 try에 예외가 발생할 가능성이 있는 코드라는 의미가.. 내가 무엇을 입력하느냐에 따라서 예외가 발생할 수도, 안 할수도 있다는 의미이다.. 공부할 때 헷갈려서 적어놓는 거..

 

 

try except else 구문

try :

     예외가 발생할 가능성이 있는 코드

except :

    예외가 발생했을 때 실행할 코드

else :

    예외가 발생하지 않았을 때 실행할 코드

finally :

    무조건 실행할 코드

fianlly는 예외 처리 구문에서 가장 마지막에 사용할 수 있는 것으로 예외가 발생하든 하지 않든 무조건 실행된다!

정수를 입력하지 않았을 때 결과
정수를 입력했을 때 결과

정수를 제대로 입력하던 입력하지 않던 마지막의 "일단 프로그램이 끝났습니다"라는 문장은 둘 다 출력되는 것을 확인할 수 있다!

 

 

 

기본 미션

Q. 구문 오류(Syntax Error)와 예외(exception)의 차이를 설명하시오.

A. 구문 오류는 프로그램의 실행 전에 발생하는 오류로 괄호 닫기나 들여쓰기 등 문법적인 이유로 문제가 있어 프로그램이 실행되지 않는 것이다. 구문 오류는 해결하지 않으면 프로그램 자체가 실행되지 않는다. 예외는 프로그램의 실행 중에 발생하는 오류로 프로그램이 실행은 되는데 제대로 된 결과가 나타나지 않을 수 있다(ex. 정수를 입력해야하는 데 소수를 입력하는 경우..) try, except 구문으로 예외를 해결하기 위해 예외 처리를 할 수 있다.

 

 

선택 미션

무슨 에러가 나는지는 모르겠어서 비주얼 코드 돌려봤다!

구문 오류는 문법적인 오류!!로 실행도 안됨! 예외는 실행은 되는데 에러가 나는거!! 

728x90