파이썬 기초 | 예외 처리 | try ~ except ~ | ZeroDivisionError | IndexError

    728x90

     

     

    1. 예외 처리

    : 코드 실행 중 발생되는 예외적인 상황(ex. 에러 발생)을 대비해 예외를 어떻게 처리할 것인지 따로 코딩해놓는 것 (try~ except~문)

    try :
    
    except :

     

    [연습문제 1]

     

    * 문자열 PER(Price to Earning Ratio) 값을 실수로 변환할 때 에러가 발생함. 예외처리를 통해 에러가 발생하는 PER은 0으로 출력하기

     

    ▶ 에러 발생

    per = ["10.31","","8.00"]  # 빈 공간인 데이터 값이 있기 때문에 float(i)는 에러남
    
    for i in per :
        print(float(i))

     

    ▶ 예외 처리하기

    per = ["10.31","","8.00"]  
    new_per = []
    
    for i in per :
        try :
            v = float(i)
        except :
            v = 0
        new_per.append(v)
            
    print(new_per)

     

     

     

    [연습문제 2]

     

    * 어떤 값을 0으로 나누면 ZeroDivisionError가 발생함. 

    try~ except ~로 예외처리를 하되, 모든 에러에 대해 예외처리 하지 말고,  ZeroDivisionError에 대해서만 예외처리 하기

     

    try :
        b = 3 / 0
        print(b)
    
        
    except ZeroDivisionError :
        print('0으로 나누면 안됩니다.')

     

     

    [연습문제 3]

     

    * 다음과 같은 코드 구조에서 발생하는 에러를 예외처리하여 적절한 에러메시지 출력하기

     

    ▶ for문을 이용해 출력되는 i 값이  data 리스트의 범위를 벗어남 → 에러 발생

    (data 리스트의 값은 3개인데 for문으로 출력되는 i는 5개, data 리스트에 없는 i값은 인덱싱이 안됨)

    data = [1,2,3]
    
    for i in range(5) :
        print(data[i])

     

    ▶ 예외 처리

    # 1
    
    data = [1,2,3]
    
    for i in range(5) :
        try :
            print(data[i])
        except :
            print("리스트의 범위를 벗어났습니다")
    # 2
    
    data = [1,2,3]
    
    for i in range(5) :
        try :
            print(data[i])
        except IndexError as e :
            print(e)

    728x90

    댓글