파이썬 기초 : 치킨 주문

조회수 809회
# 치킨 주문 연습중입니다.
# Order = int(input("몇마리를 시키시겠습니까? : ")) 에서 indetificatoin error라고 뜹니다.
# order 라는 문구를 사용하면 안되는 걸까요?
# 코드 문제 일까요? 프로그램 설정 문제일까요?

class SoldOutError(Exception):
    pass

chicken = 10
waiting = 1

while(True):
    try:
    Order = int(input("몇마리를 시키시겠습니까? : "))
    if Order <= 0:
        raise ValueError
    elif Order >= 10:
        raise SoldoutError
    else:
        print("{0}마리 치킨 주문 완료했습니다. {1}번 손님"\
            .format(Order, waiting))
        waiting += 1
        Order -= chicken

    if chicken == 0:
        raise SoldOutError
        break        

    except ValueError:
        print("잘못된 값을 입력했습니다. 자연수를 입력하세요.")
    except SoldOutError:
        print("재고가 없습니다. 감사합니다.")
        break

1 답변

  • 좋아요

    2

    싫어요
    채택 취소하기

    치킨이라서... 확인해보게됬네요 ㅎㅎ

    • 위에서 말씀하신 것처럼 일단 들여쓰기 오류가 있고요
    • 치킨수가 줄어들지 않는 오류는 order와 chicken 순서를 변경해주시면 될것 같습니다
    • SoldOutError의 경우에는 13번째 줄에서 O가 대문자가 아니어서 작동이 안됬네요. exception 프린트 해보시면 확일 하실수 있어요
    class SoldOutError(Exception):
        pass
    
    chicken = 10
    waiting = 1
    while(True):
        try:
            Order = int(input("몇마리를 시키시겠습니까? : "))
            if Order <= 0:
                raise ValueError
            elif Order > 10:
                raise SoldOutError #대문자 오타
            else:
                print("{0}마리 치킨 주문 완료했습니다. {1}번 손님"\
                    .format(Order, waiting))
    
                waiting += 1
                chicken -= Order #순서변경
                print(f'남은치킨 :{chicken}')
            if chicken == 0:
                raise SoldOutError
                break        
    
        except ValueError:
            print("잘못된 값을 입력했습니다. 자연수를 입력하세요.")
        except :
            print(f"현재 재고는{chicken}마리 입니다. 재고가 없습니다. 감사합니다.")
            break
    
    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)