WeniVooks

검색

견고한 파이썬

연습문제

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)
    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
    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)
    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)
{"packages":["numpy","pandas","matplotlib","lxml"]}
12.1 예외 처리와 오류 관리13장 함수 심화