본문 바로가기

Language/python

혼공학습단 8기 파이썬 5주차

예 안녕하세요.

여름방학 기간 지나고 다시 하려니.. 4주차에 공부했던 함수들 다 까먹었네요.ㅋ

그래서 복습🐱‍👤까지 끝낸 멋진 나.^_^

https://so106037.tistory.com/114

 

혼공단 5주차.. 하기 전에 복습먼저 ✅

피보나치수열 counter = 0 def fibonacci(n): print("fibonacci({}) 계산 중... ".format(n)) global counter counter += 1 if n == 1: return 1 if n ==2: return 2 else: return fibonacci(n-1)+ fibonacci(n-2)..

so106037.tistory.com

 

얼마 남지 않은 혼공학습단 활동.

아좌아좌^^

 


혼공학습단 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.

3-1 이해가 안간다. 답지에는 ValueError라는데, 실제 실행하면 TypeError 등장.

 

 


파이썬의 모듈

파이썬은 모듈이라는 기능을 활용하여 코드를 분리, 공유한다. 크게 표준 모듈외부 모듈로 나뉜다.파이썬이 기본적으로 내장하고 있는 모듈을 "표준 모듈", 다른 사람들이 만들어서 공개한 모듈을 "외부 모듈"이라고 함.

 

모듈 = 여러 변수와 함수를 가지고 있는 집합체.

 

모듈을 가져올 때는 다음과 같은 구문을 사용한다.

import 모듈 이름

 

기본적인 모듈 1. math 모듈

이름과 같이.. 수학과 관련된 기능을 가지고 있다.

자동완성 기능으로 보는 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주차 한 주 남았는데 벌써 마지막 챕터?!?

정말.. 멋진. 나🎀