[파이썬, python] 기초공부, Error, 예외처리, finally


강의주소 : https://youtu.be/kWiCuklohdY

1 에러처리 방법 

----- 일반

# error 처리하기

print("나누기 전용 계산기입니다.")
num1 = int(input("첫 번째 숫자 입력 : "))
num2 = int(input("두 번째 숫자 입력 : "))
print("{0}/{1}={2}" .format(num1num2int(num1/num2)))












------ 에러처리 1

try:    #문제가 발생시 except 문장을 찾아서 에러값을 찾아서 print 값을 출력한다. 

    print("나누기 전용 계산기입니다.")
    num1 = int(input("첫 번째 숫자 입력 : "))
    num2 = int(input("두 번째 숫자 입력 : "))
    print("{0}/{1}={2}" .format(num1num2int(num1/num2)))
except ValueError:
    print("에러! 잘못된 값을 입력하였습니다.")
except ZeroDivisionError as err:
    print(err)







에러전

try:    #문제가 발생시 except 문장을 찾아서 에러값을 찾아서 print 값을 출력한다. 
    print("나누기 전용 계산기입니다.")
    nums = []  #변수 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)






try:    #문제가 발생시 except 문장을 찾아서 에러값을 찾아서 print 값을 출력한다. 
    print("나누기 전용 계산기입니다.")
    nums = []  #변수 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)
except:   #상기의 error를 제외한 모든 error를 아래읜 문구로 출력한다.
    print("알 수 없는 에러가 발생하였습니다.")

또는 

try:    #문제가 발생시 except 문장을 찾아서 에러값을 찾아서 print 값을 출력한다. 
    print("나누기 전용 계산기입니다.")
    nums = []  #변수 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)
except Exception as err:  #정확한 에러 내용을 출력한다. 
    print("알 수 없는 에러가 발생하였습니다.")
    print(err)






2 사용자 정의 예외처리

# error 발생
try:    #문제가 발생시 except 문장을 찾아서 에러값을 찾아서 print 값을 출력한다. 
    print("한 자리 숫자 나누기 전용 계산기입니다.")
    num1 = int(input("처음 숫자 입력 : "))
    num2 = int(input("두번째 숫자 입력 : "))
    if num1 >=10 or num2 >=10:
        raise ValueError   #error 만들기
    print("{0}/{1}={2}" .format(num1num2int(num1/num2)))
except ValueError:
    print("한 자리 숫자로 다시 입력")









사용자 예외처리 및 finally 함수


class BigNumberError(Exception):
    def __init__(selfmsg):
        self.msg = msg
    def __str__(self):
        return self.msg

try:    #문제가 발생시 except 문장을 찾아서 에러값을 찾아서 print 값을 출력한다. 
    print("한 자리 숫자 나누기 전용 계산기입니다.")
    num1 = int(input("처음 숫자 입력 : "))
    num2 = int(input("두번째 숫자 입력 : "))
    if num1 >=10 or num2 >=10:
        raise BigNumberError ("입력값 : {0}{1}" .format(num1num2))
    print("{0}/{1}={2}" .format(num1num2int(num1/num2)))
except ValueError:
    print("한 자리 숫자로 다시 입력")
except BigNumberError as err:
    print("에러, 한 자리 숫자로 다시 입력")
    print(err)

finally#무조건 출력됨
    print("계산기를 이용해주셔서 감사힙니다. ")










퀴즈

--------------------------- 내가 풀은거

일단 오답임, 입력 오류를 했을때 while 문을 빠져나가면 안되는데 try 문을 밖으로 빼서 

빠져나감. 덕분에 재고소진시에는 프로그램이 자동 종료됨 


chicken = 10
waiting = 1 #홀 만석, 대시 1부터 시작

class SoldOutError(Exception):
        def __init__(selfmsg):
                self.msg = msg
        def __str__(self):
                return self.msg
                
try:
        while(True):
                
                print("[남은치킨 : {0}]" .format(chicken))                
                order = int(input("치킨 주문 몇마리?"))
                if order < 1:
                        raise ValueError
                elif order > chicken#남은 치킨보다 주문량이 많을 때
                        print("재료 부족")
                else:
                        print("[대기번호 {0}], {1}마리 주문완료" .format(waitingorder))
                        waiting += 1
                        chicken -= order
                        if chicken == 0:
                                raise SoldOutError ("재고소진")

except ValueError:
        print("입력 오류 ")        
except SoldOutError as err:
        print(err)


--------------- 영상


chicken = 10
waiting = 1 #홀 만석, 대시 1부터 시작

class SoldOutError(Exception):
        pass

while(True):
        try:
                print("[남은치킨 : {0}]" .format(chicken))                
                order = int(input("치킨 주문 몇마리?"))
                if order > chicken#남은 치킨보다 주문량이 많을 때
                        print("재료 부족")                
                elif order <= 0:
                        raise ValueError
                else:
                        print("[대기번호 {0}], {1}마리 주문완료" .format(waitingorder))
                        waiting += 1
                        chicken -= order
                        if chicken == 0:
                                raise SoldOutError
        except ValueError:
                print("입력 오류 ")        
        except SoldOutError as err:
                print("재고소진")
                break




댓글 쓰기

0 댓글