파이썬 기초 : 치킨 주문
조회수 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 답변
-
치킨이라서... 확인해보게됬네요 ㅎㅎ
- 위에서 말씀하신 것처럼 일단 들여쓰기 오류가 있고요
- 치킨수가 줄어들지 않는 오류는 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
예외처리를 해당 스크립트가 찾지 못해서 예외 처리된 거지요.
여기서 어느 부분을 도와드리면 될지 잘 모르겠군요.
- 올려주신 코드를 그대로
댓글 입력