혼공파

혼공파 5주차!!! 😋

오쟝 2023. 8. 6. 20:10

 

<오류>

  • 프로그램 실행 전에 발생하는 오류 : 구문 오류
  • 프로그램 실행 중에 발생하는 오류 : 예외, 런타임 오류

 

  • 구문 오류

구문 오류는 괄호의 개수, 들여쓰기 문제 등으로 프로그램이 실행되기도 전에 발생하는 오류

 

  • 예외

프로그램이 일단 실행된 다음, 실행 중에 발생하는 오류를 예외 또는 런타임 오류라고 부름

 

<기본 예외 처리>

1. 조건문 사용

만약 숫자를 입력하라고 했는데 문자를 입력했을 시 오류 발생 -> isdigit() 함수 사용해 숫자가 입력되면 정상 실행을, 아니면 다른 코드를 실행할 수 있음

(ex.. isdigit -> 모두 숫자 | isalnum -> 숫자와 문자 | isalpha -> 모두 문자 | isidentifier -> 모두 정수 | isspace -> 모두 공백 | islower -> 모두 소문자 | isupper -> 모두 대문자)

 

2. try 구문 사용

if ~ else와 비슷!!!

*** try:

         예외 가능성이 있는 코드

     except:

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

오류가 발생하지 않고 except 부분의 코드가 실행되는 것을 볼 수 있습니다!!!

** except 구문 내부에 코드를 작성하지 않으면 오류가 발생하기 때문에 pass 키워드를 넣어서 사용할 수 있습니다!!!!

 

++ try except else 구문 사용 -> try 코드 안에 넣어서 사용해도 되지만 알아는 두기!

*** try:

          예외 가능성이 있는 코드

     except:

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

     else:

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

 

++ finally 구문 -> 예외가 발생하든 발생하지 않든 무조건 실행하는 코드

*** try:

          예외 가능성이 있는 코드

     except:

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

     else:

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

     finally:

          무조건 실행할 코드

 

** finally 구문이 주로 사용되는 부분 -> 파일이 닫혔는지 확인하고 무조건 닫을때!

 

chapter 6-1 확인 문제

1. 구문 오류는 프로그램을 실행하기 전에 발생하고, 예외는 프로그램 실행 도중 발생한다!

 

2. 다음 코드의 빈칸을 조건문을 사용한 코드 tryp except 구문을 사용한 코드로 채워서 예외가 발생하지 않고 코드가 실행 결과처럼 출력되게 만들어 주세요.

numbers = [52, 273, 32, 103, 90, 10, 275]

print("# (1) 요소 내부에 있는 값 찾기")
print("- {}는 {} 위치에 있습니다.".format(52, numbers.index(52)))
print()

print("# (2) 요소 내부에 없는 값 찾기")
number = 10000

if number in numbers:
    print("- {}는 {} 위치에 있습니다.".format(number,numbers.index(number)))
else:
    print("- 리스트 내부에 없는 값입니다.")
print()

print("--- 정상적으로 종료되었습니다. ---")
numbers = [52, 273, 32, 103, 90, 10, 275]

print("# (1) 요소 내부에 있는 값 찾기")
print("- {}는 {} 위치에 있습니다.".format(52, numbers.index(52)))
print()

print("# (2) 요소 내부에 없는 값 찾기")
number = 10000

try:
    print("- {}는 {} 위치에 있습니다.".format(number,numbers.index(number)))
except:
    print("- 리스트 내부에 없는 값입니다.")
print()

print("--- 정상적으로 종료되었습니다. ---")

 

3. 다음 중 구문 오류 발생이 예상되면 '구문 오류'에, 예외 발생이 예상되면 '예외'에 체크 표시를 한 후, 예상되는 에러명도 적어보세요.

① 예외

② 예외

③ 구문 오류

④ 예외

 

<예외 고급>

프로그래밍 언어에서 예외가 발생하면 예외 객체를 저장!

*** try:

          예외 가능성이 있는 코드

     except 예외의 종류  as 예외 객체를 활용할 변수 이름:

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

 

Exception -> 예외의 어머니, 예외의 종류를 알고 싶을 때 사용할 수 있음

*** except Exception as exception:

           type(exception) -> 예외의 종류를 알려줌

           exception -> 예외 구문을 출력해줌

 

예외 구분하기

*** try:

         예외 가능성이 있는 코드

     except 예외 종류:

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

     ...

list_number = [1, 2, 3, 4, 5]

a = int(input("숫자를 입력해주세요 > "))
try:
    print(list_number[a])
except ValueError:
    print("숫자를 입력해주세요")
except IndexError:
    print("0~4 사이의 값을 입력해주세요")

 

** 모든 예외를 잡을 때 위와 같은 방식을 사용할 수 있다!! 하지만 모든 예외를 잡는 것은 어렵기 때문에 except Exception as exception을 사용해서 모든 예외를 잡을 수 있따~~

 

<raise 구문>

raise 구문을 사용하면 예외를 강제로 발생시킬 수 있습니다~!!!!

*** raise 예외 객체

 

chapter 6-2 확인 문제

1. 예외를 강제로 발생시킬 떄 사용하는 키워드로 맞는 것은 무엇을까요?

-> ②

 

<모듈>

  • math 모듈 - 수학과 관련된 기능을 가지고 있음
    • math.sin( 숫자 ) -> sin 함수
    • math.cos( 숫자 ) -> cos 함수
    • math.tan( 숫자 ) -> tan 함수
    • math.floor( 숫자 ) -> 내림
    • math.ceil( 숫자 ) -> 올림

** from 모듈 이름 import 가져오고 싶은 변수 또는 함수 를 사용하게 되면 특정한 변수만 가져올 수 있다!!! 모듈이름 없이도 사용 가능 ㄷㄷ

** from 모듈 이름 as 사용하고 싶은 식별자 를 사용하게 되면 모듈 이름 대신 식별자를 사용할 수 있따!!!!

 

  • random 모듈 - 랜덤한 값을 생성할 때 사용
    • random.random() -> 0.0과 1.0 사이의 float를 리턴 (* 9를하게 되면 0부터 9.0 사이의 float를 리턴!!)
    • random.uniform( 숫자, 숫자 ) -> 지정한 범위 사이의 float를 리턴
    • random.randrange( 숫자 ) -> 0부터 숫자 사이의 값을 리턴 (정수!!)
    • random.choice( 리스트 ) -> 리스트 내부의 요소를 랜덤하게 선택!!
    • random.shuffle( 리스트 ) -> 리스트를 랜덤하게 섞음
    • random.sample( 리스트, k=숫자 ) -> 리스트 요소를 숫자만큼 뽑음 

 

  • datetime 모듈 - 날짜, 시간과 관련된 모듈 생성
    • now = datetime.datetime.now() -> 현재의 모든 시각 
    • now.year(month, day, hour, minute, second) -> 현재 연도(달, 일, 시간, 분, 초)
    • now.strfttime("%Y.%m.%d.%H.%M.%S") -> 시간을 포맷에 맞춰 출력
    • now.replace(변수 = 값) -> 시간 정보를 변환할 수 있음

 

  • time 모듈
    • time.sleep( 숫자 ) -> 잠시동안 출력 정지

 

  • urlib 모듈
    • request.urlopne("주소") -> 주소의 메인 페이지를 읽음

 

7-1 chapter 확인 문제

1. 다음 중 math 모듈의 함수를 제대로 읽어 들이지 못하는 코드를 고르세요

-> ②

 

2. 파이썬 문서를 보면서 본문에서 살펴보지 않았던 모듈의 이름을 다섯 개 적어 보세요. 그리고 해당 모둘에 어떠한 기능들이 들어 있는지도 간단하게 적어보세요.

1. socket -> 저수준 네트워킹 인터페이스

2. timeit -> 작은 코드 조각의 실행 시간 측정

3. token -> 파이썬 구문 분석 트리에 사용되는 상수

4. xml -> XML 처리 모듈

 

 

 

이제 한 주 남았당~~~!! (●ˇ∀ˇ●)(●ˇ∀ˇ●)

'혼공파' 카테고리의 다른 글

혼공단 회고록.. 📖  (0) 2023.08.16
혼공파 6주차..!  (0) 2023.08.16
혼공파 4주차~😁  (0) 2023.07.25
혼공파 3주~~🫡🫡  (0) 2023.07.17
혼공파 2주차~😊  (0) 2023.07.11