본문 바로가기

연습문제

예외처리 연습문제입니다. ZeroDivisionError 처리, 커스텀 예외 클래스 생성, IndexError 처리를 연습합니다.

1번 문제

두 수를 나누는 함수 div(a, b)가 있었을 때 b에 0이 입력되면 예외처리를 하여 정상작동이 되는 함수로 작성을 해주세요.

2번 문제

하나의 숫자에 제곱근을 구하는 함수 sqrt_number(num)이 있었을 때 자체 예외 NegativeNumberError를 정의하세요.

이 예외는 음수가 입력될 때 "음수의 제곱근은 계산할 수 없습니다."라는 메시지를 출력합니다.

3번 문제

사용자로부터 인덱스 값을 입력 받아서 리스트 ["apple", "banana", "cherry"]에서 해당 인덱스의 값을 출력하는 함수를 작성하세요.

사용자가 범위를 벗어난 인덱스를 입력하면 "리스트의 범위를 벗어났습니다."라는 메시지를 출력합니다.

답안

  1. code

    def div(a, b):
        try:
            return a / b
        except ZeroDivisionError:
            print('ZeroDivisionError')
        except:
            print('Error')
    
    div(3, '1')
    div(3, 0)
    
  2. code

    class NegativeNumberError(Exception):
        pass
    
    def sqrt_number(num):
        if num >= 0:
            return num ** 0.5
        else:
            print('음수의 제곱근은 계산할 수 없습니다.')
            raise NegativeNumberError
    
  3. code

    def get_item(num):
        item_list = ['apple', 'banana', 'cherry']
        try:
            return item_list[num]
        except IndexError:
            return '리스트의 범위를 벗어났습니다.'
        except: # 이런 경우에 대비하시는 것이 좋습니다.
            return '예상치 못한 에러입니다.'
    
    num = int(input('인덱스 값을 입력해 주세요.: '))
    get_item(num)