티스토리 뷰

import random

class inputWrongNumError(Exception):
    pass

randomNum = random.randint(1, 9)

while(1):
    try:
        print("1 ~ 9의 값 중 입력하여 맞추어보세요.")
        num = int(input("입력 : "))

        if num < 1 or num > 9:
            raise inputWrongNumError

        if num == randomNum:
            print("성공!")
            break
        else:
            print("다시 시도 해보세요")
            continue
    except inputWrongNumError:
        print("1 ~ 9 값을 입력해주세요\n")

--출력 결과--
1 ~ 9의 값 중 입력하여 맞추어보세요.
입력 : 10
1 ~ 9 값을 입력해주세요

만들 예외처리 명을 class로 만들고 파라미터에 Exception을 받습니다.
먼저 내용을 pass로 하고 진행해보았습니다.

rasie를 통해 새로만든 inptuWrongNumError를 발생시킨 결과
except에서 해당 에러를 확인하여 print문을 실행 시켰습니다.

 

import random

class inputWrongNumError(Exception):
    def __init__(self, msg):
        self.msg = msg

    def __str__(self):
        return self.msg

randomNum = random.randint(1, 9)

while(1):
    try:
        print("1 ~ 9의 값 중 입력하여 맞추어보세요.")
        num = int(input("입력 : "))

        if num < 1 or num > 9:
            raise inputWrongNumError("Err) input : {0}".format(num))

        if num == randomNum:
            print("성공!")
            break
        else:
            print("다시 시도 해보세요")
            continue
    except inputWrongNumError as err:
        print(err)
        print("1 ~ 9 값을 입력해주세요\n")

--출력 결과--
1 ~ 9의 값 중 입력하여 맞추어보세요.
입력 : 10
Err) input : 10
1 ~ 9 값을 입력해주세요

위의 예제처럼 새로만든 inputWrongNumError에 __init__(생성자)와 __str__를 넣어줍니다.
__str__은 객체를 문자열로 표현한 것을 반환합니다.

inputWrongNumError이 발생될 때 생성자를 통해서 msg변수에 값이 입력되고
except에서 해당 객체를 print로 찍었을 때 msg변수의 값이 출력되는 것 입니다.

728x90

'Python' 카테고리의 다른 글

[파이썬] 패키지, 모듈 위치 찾기  (0) 2020.09.15
[파이썬] 모듈(module), 패키지(package)  (0) 2020.09.15
[파이썬] raise  (0) 2020.09.15
[파이썬] 예외처리 (try, except, finally)  (0) 2020.09.15
[파이썬] pass, super  (0) 2020.09.15
댓글
댓글쓰기 폼
공지사항