ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파이썬 기초7,Quiz
    파이썬 2021. 7. 19. 23:03
    728x90

    파이썬 기초7

    예외처리


    try:
        print("나누기 전용 계산기입니다.")
        nums = []
        nums.append(int(input("첫 번재 숫자를 입력하세요: ")))
        nums.append(int(input("두 번재 숫자를 입력하세요: ")))
        # nums.append(int(nums[0] / nums[1]))
        print("{0} / {1} = {2}".format(nums[0], nums[1], nums[2]))
    except ValueError:
        print("에러! 잘못된 값을 입력하였습니다.")
    except ZeroDivisionError as err:
        print(err)    #//dision by zero
    except Exception as err:
        print("알 수 없는 에러가 발생하였습니다.")  #//나머지 모든에러 처리
        print(err)   #// 6 과 3을 넣었을때 {2}의 값이 없으므로 에러임을 알려주고 어떤에러인지 알려줌

    오류 발생 시키기


    try:
        print("한 자리 숫자 나누기 전용 계산기 입니다ㅣ.")
        num1 = int(input("첫 번째 숫자를 입력하세요 : "))
        num2 = int(input("두 번째 숫자를 입력하세요 : "))
        if num1 >= 10 or num2 >= 10:
            raise ValueError #// 에러나는 값이 들어올 경우 해당 에러처리로 향함
        print("{0} / {1} = {2}".format(num1, num2, int(num1 / num2)))
    except ValueError:
        print("잘못된 값을 입력하였습니다. 한 자리 숫자만 입력하세요.")
        #//10 과 5를 넣을 경우 잘못된 값이 들어갔음을 알려줌

    사용자 정의 예외처리


    class BigNumberError(Exception):#//사용자 정의한 에러
        def __init__(self, msg):
            self.msg = msg
    
        def __str__(self):
            return self.msg
    
    try:
        print("한 자리 숫자 나누기 전용 계산기 입니다ㅣ.")
        num1 = int(input("첫 번째 숫자를 입력하세요 : "))
        num2 = int(input("두 번째 숫자를 입력하세요 : "))
        if num1 >= 10 or num2 >= 10:
            raise BigNumberError("입력값 :{0}, {1}".format(num1, num2)) #// 에러나는 값이 들어올 경우 해당 에러처리로 향함
        print("{0} / {1} = {2}".format(num1, num2, int(num1 / num2)))
    except ValueError:
        print("잘못된 값을 입력하였습니다. 한 자리 숫자만 입력하세요.")
        #//10 과 5를 넣을 경우 잘못된 값이 들어갔음을 알려줌
    except BigNumberError as err:
        print("에러가 발생하였습니다. 한 자리 숫자만 입력하세요.")
        print(err)
    finally:
        print("계산기를 이용해 주셔서 감사합니다.")  
    한 자리 숫자 나누기 전용 계산기 입니다ㅣ.
    첫 번째 숫자를 입력하세요 : 10
    두 번째 숫자를 입력하세요 : 6
    에러가 발생하였습니다. 한 자리 숫자만 입력하세요.
    입력값 :10, 6
    계산기를 이용해 주셔서 감사합니다. #//finally 에러구문 사용
    #// 오류가 나든 안나든 무조건 실행, 

    예외처리:없는 파일 열거나, 리스트에 없는값을 잘못 접근했을때 처리해 프로그램이 강제 종료되는걸 막음으로써 완성도 높일 수 있음

    Quiz


    # Quiz)동네에 항상 대기 손님이 있는 맛있는 치킨집이 있음.
    # 대기 손님의 치킨 요리 시간을 줄이고자 자동 주문 시스템을 제작
    # 시스템 코드를 확인하고 적절한 예외처리 구문을 넣으시오
    
    # 조건1: 1보다 작거나 숫자가 아니 입력값이 들어올 때는 ValueError로 처리
    # 출력 메시지: "잘못된 값을 입력하였습니다."
    
    # 조건2: 대기 손님이 주문할 수 있는 총 치킨량은 10마리로 한정
    # 치킨 소진시 사용자 정의 에러(SoldOutError)를 발생시키고 프로그램 종료
    # 출력 메시지: "재고가 소진되어 더 이상 주문을 받지 않습니다."
    class SoldOutError(Exception):
        pass
    
    
    chicken = 10
    waiting = 1
    while(True):
        try:
            print("남은 치킨 : {0}".format(chicken))
            order = int(input("치킨을 몇 마리 주문하시겠습니까?"))
            if order > chicken:
                print("재료가 부족합니다.")
            elif order <= 0:       #조건1 만족 시키기
                raise ValueError
            else:
                print("[대기번호 :{0}] {1}마리 주문이 완료되었습니다.".format(waiting,order))
                waiting += 1         #주문 들어올때마다 손님 +1
                chicken -= order     #주문 들어올때마다 주문 수 만큼 치킨 수 줄어듬
    
            if chicken == 0:
                raise SoldOutError    # 더 이상 팔 치킨이 없을때 SoldOutError 발생
        except ValueError:
            print("잘못된 값을 입력하였습니다.")
        except SoldOutError:
            print("재고가 소진되어 더 이상 주문을 받지 않습니다.")
            break  #주문 더 이상 받지 않으므로 break로 탈출

    '파이썬' 카테고리의 다른 글

    [python] Regular Expression(정규표현식) #Step2  (0) 2021.10.23
    [python] Regular Expression(정규표현식) #Step1  (0) 2021.10.23
    파이썬 class_예제문제  (0) 2021.07.18
    파이썬 기초6  (0) 2021.07.18
    파이썬 Day5  (0) 2021.07.17

    댓글

Designed by Tistory.