예 안녕하세요.
여름방학 기간 지나고 다시 하려니.. 4주차에 공부했던 함수들 다 까먹었네요.ㅋ
그래서 복습🐱👤까지 끝낸 멋진 나.^_^
https://so106037.tistory.com/114
얼마 남지 않은 혼공학습단 활동.
아좌아좌^^
혼공학습단 8기 파이썬 5주차 기본미션
구문 오류? 예외?
오류(error)에는 크게 두 가지 종류가 존재한다.
- 프로그램 실행 전에 발생하는 오류
- 프로그램 실행 중에 발생하는 오류
두가지 모두 오류라고 부르나,
실행 전에 발생하는 오류를 "구문 오류(syntax error)", 프로그램 실행 중에 발생하는 오류를 예외(exception), 또는 런타임 오류(runtime error)라고 부른다.
#구문 오류
괄호의 개수, 들여쓰기 문제 등으로 프로그램이 실행되기도 전에 발생하는 오류.
#예외
예외 또는 런타임 오류는 실행 중에 발생하는 오류를 의미한다.
예외 처리
프로그램을 짜다 보면.. 예외 발생 시 스무스하게 넘기기 위해 예외 처리를 해야하는 경우가 있다.
대충 두 가지 방법이 존재하는데, 하나는 조건문을 사용하는 방법과 try문을 사용하는 방법이다.
조건문을 사용하여 예외를 처리하는 건 "기본 예외 처리"라고 부른다.
그러나 예외가 발생할 상황을 모두 예측하여 조건문으로 처리하는 것은 굉장히 어려운 일이다. 프로그래밍 시 구조적인 문제로 인해 조건문만으로 예외를 처리할 수 없는 경우도 존재한다.
그렇기에 try except 구문이 등장했다.
try:
#예외가 발생할 가능성이 있는 코드
except:
#예외가 발생했을 때 실행할 코드
try:
number_input_a = int(input("정수 입력>> "))
print("원의 반지름: ",number_input_a)
print("원의 둘레: ", 2*3.14*number_input_a)
print("원의 넓이: ",3.14*number_input_a*number_input_a)
except:
print("예외발생!발생!발생!")
try except 구문 + pass 키워드 조합
예외가 발생하면 일단 처리해야 하지만, 해당 코드가 닥히 중요한 부분이 아니라면 일단 프로그램이 강제 종료되는 것부터 막자는 목적으로 except 구문에 아무것도 넣지 않고 try 구문을 사용할 때가 있다.
이 경우, 아무것도 넣지 않으면 구문 오류가 발생하므로, "pass 키워드"를 넣어준다.
try:
#예외가 발생할 가능성이 있는 코드
except:
pass
list_input_a = ["52","123","65","179","바보"]
list_number=[]
for item in list_input_a:
try:
float(item)
list_number.append(item)
except:
pass
print("{} 내부에 있는 숫자는".format(list_input_a))
print("{} 입니다.".format(list_number))
리스트 내에 숫자를 가져오는데 "바보"라는 문자열을 만나 예외가 발생했지만,
별 다른 처리 없이 pass된 것을 확인 가능.
try except else 구문
예외가 발생하지 않았을 때 실행할 코드를 else 뒤에 작성.
try:
#예외가 발생할 가능성이 있는 코드
except:
#예외가 발생했을 때 실행할 코드
else:
#예외가 발생하지 않았을 때 실행할 코드
해당 구문을 사용하는 경우는, 주로 예외가 발생할 가능성이 있는 코드만 try 구문 내에 넣고, 나머지를 모두 else 구문으로 빼는 식으로 작성한다.
try:
number_input_a=int(input("정수 입력>> "))
except:
print("정수를 입력하지 않았음")
else:
print("원의 반지름: ",number_input_a)
print("원의 둘레: ", 2*3.14*number_input_a)
print("원의 넓이: ",3.14*number_input_a*number_input_a)
finally 구문
해당 구문은 예외 처리 구문에서 가장 마지막에 사용할 수 있는 구문이다.
예외 발생 유무에 상관없이 무조건 실행할 때 사용하는 코드이다.
try:
#예외가 발생할 가능성이 있는 코드
except:
#예외가 발생했을 때 실행할 코드
else:
#예외가 발생하지 않았을 때 실행할 코드
finally:
#무조건 실핼할 코드
여기서 주의할 점은, try 구문 중간에 return에 의해 탈출해서 finally 구문은 무조건 실행된다는 것이다.
함수 내부에서 파일 처리 코드를 깔끔하게 만들고 싶을 때 finally 구문을 사용하는 경우가 많다. 왜냐하면 try 구문에서 원할 때 return에서 빠져나가도 파일이 무조건 닫히기 때문이다.
def write_text_file(filename,text):
try:
file =open(filename,"w")
#여러가지 파일에 관한 처리 수행
return
#파일에 텍스트 입력
file.write(text)
except Exception as e:
print(e)
finally:
file.close()
write_text_file("test.txt","hhihihi")
📜 기본미션 P.291
Q. 구문 오류와 예외의 차이를 설명해보세요.
A. 구문 오류는 프로그램 실행 전에 발생하는 오류이고, 예외는 프로그램 실행 중에 발생하는 오류이다. 즉, 구문 오류는 프로그램 실행조차도 되지 않는다. 예외는 프로그램 실행은 되지만, 예외가 발생하는 구문에서 멈춘다.
📜 추가미션 P.293
Q. 다음 중 구문 오류 발생이 예상되면 '구문 오류'에, 예외 발생이 예상되면 '예외'에 체크표시 한 후, 예상되는 에러명도 적어보세요.
A.
파이썬의 모듈
파이썬은 모듈이라는 기능을 활용하여 코드를 분리, 공유한다. 크게 표준 모듈과 외부 모듈로 나뉜다.파이썬이 기본적으로 내장하고 있는 모듈을 "표준 모듈", 다른 사람들이 만들어서 공개한 모듈을 "외부 모듈"이라고 함.
모듈 = 여러 변수와 함수를 가지고 있는 집합체.
모듈을 가져올 때는 다음과 같은 구문을 사용한다.
import 모듈 이름
기본적인 모듈 1. math 모듈
이름과 같이.. 수학과 관련된 기능을 가지고 있다.
[함수 설명] sin(): 사인 / cos(): 코사인 / tan(): 탄젠트 / floor(): 내림 / ceil(): 올림
from 구문
모듈에는 많은 변수와 함수가 들어있다. 그 중 우리가 활용하고 싶은 기능은 극히 일부일 수 있는데.. 이러한 경우 math.cos() 처럼 앞에 math를 쓰는 것이 귀찮을 수 있다.
이런 경우 from 구문을 사용한다.
from 모듈이름 import 가져오고 싶은 변수 또는 함수
as구문
모듈을 가져올 때 이름 충돌이 발생하는 경우가 존재한다. 또는 모듈의 이름이 너무 길어서 짧게 줄여 사용하고 싶을 경우, as 구문을 통해 별명을 지어줄 수 있다.
import 모듈이름 as 사용하고 싶은 식별자
math모듈 외에도 랜덤한 값을 생성할 때 사용하는 random 모듈,
시스템과 관련된 정보를 가지고 있는 sys 모듈,
운영체제와 관련된 기능을 가진 os 모듈,
날짜와 시간 관련된 모듈인 datefime 모듈,
시간과 관련된 기능을 다룰 때 사용하는 time 모듈,
URL을 다룰 때 사용하는 urllib 모듈 등이 파이썬에서 많이 사용되고 있다.
숙지하자...
어렵다 파이썬..
그런데 부지런히 혼공학습단 진행 따라가다 보니 어느새 .. 책을 이렇게나 봤다고?
깜짝 놀랐다 정말.
내가 책 한권을 독파하는게 얼마만인지.. 사실 혼공파 절반 넘게 본 줄도 몰랐음.
지금 1/3도 안남았다는게 ㅋㅋㅋ너무 신기하다.
6주차 한 주 남았는데 벌써 마지막 챕터?!?
정말.. 멋진. 나🎀
'프로그래밍 > python' 카테고리의 다른 글
[python] qrcode 모듈 사용 중 "No module named 'Image'" 예외 발생 (0) | 2022.10.11 |
---|---|
[python] socket 모듈로 내부 IP 확인하기. socket(), getsockname(), gethostname(), 정규표현식 (1) | 2022.10.11 |
혼공단 5주차.. 하기 전에 복습먼저 ✅ (0) | 2022.08.11 |
혼공학습단 8기 파이썬 4주차 (0) | 2022.07.31 |
[파이썬] 이터레이터(iterator) (0) | 2022.07.30 |