-
파이썬 기초7,Quiz파이썬 2021. 7. 19. 23:03728x90
파이썬 기초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