파이썬 기초 : 치킨 주문

조회수 79회
# 치킨 주문 연습중입니다.
# 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

2 답변

  • 좋아요

    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
    
    • 올려주신 코드를 그대로 foo.py 파일 만들어서 붙여넣고 실행해 봤을 때는 (당연히) indentation error가 떴습니다. 줄바꿈이 잘못됐다는 것이고, identification error는 아닙니다.
    • 줄바꿈을 올바르게 고치고 실행하면 실행은 되는데, 10보다 작은 수를 입력하는 한 스크립트가 영원히 계속됩니다. 다시 말하면, 치킨의 재고가 떨어지질 않습니다.
    • 10을 입력했더니 NameError: name 'SoldoutError' is not defined가 터지면서 종료됐습니다. 정의(하(려고 시도)하신 SoldOutError 예외처리를 해당 스크립트가 찾지 못해서 예외 처리된 거지요.

    여기서 어느 부분을 도와드리면 될지 잘 모르겠군요.

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

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.