반응형
try / except 사용
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)
except Exception as err:
print("알 수 없는 에러가 발생하였습니다.")
print(err)
# 에러 내용 출력 없이 print 문구만 출력
except
print("알 수 없는 에러가 발생하였습니다.")
에러 발생시키기
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("잘못된 값을 입력하였습니다. 한 자리 숫자만 입력하세요.")
except BigNumberError as err:
print("에러가 발생하였습니다. 한 자리 숫자만 입력하세요.")
print(err)
__str__
str 메서드는 파이썬 클래스에서 객체를 문자열로 표현하기 위해 사용되는 특수한 메서드입니다. 이 메서드를 정의하면 print() 함수나 str() 내장 함수를 호출할 때 해당 객체를 문자열로 변환하여 출력할 수 있습니다.
일반적으로 str 메서드는 객체의 인스턴스 변수들을 문자열로 변환하여 반환하는 방식으로 구현됩니다. 이렇게 하면 해당 객체의 정보를 쉽게 확인할 수 있고, 디버깅이나 로깅 등에서 유용하게 활용될 수 있습니다.
예를 들어, 다음과 같은 클래스가 있다고 가정해봅시다.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
이 클래스의 객체를 문자열로 표현하기 위해 str 메서드를 다음과 같이 구현할 수 있습니다.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"이름: {self.name}, 나이: {self.age}"
이제 Person 객체를 생성하고 print 함수로 출력해보면 다음과 같은 결과가 나타납니다.
person = Person("홍길동", 30)
print(person) # 출력: 이름: 홍길동, 나이: 30
즉, str 메서드를 구현하면 해당 객체를 문자열로 쉽게 출력할 수 있습니다.
Finally
무슨 일이 있어도 출력되는 내용
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("잘못된 값을 입력하였습니다. 한 자리 숫자만 입력하세요.")
except BigNumberError as err:
print("에러가 발생하였습니다. 한 자리 숫자만 입력하세요.")
print(err)
finally:
print("계산기를 이용해주셔서 감사합니다.")
한 자리 숫자 나누기 전용 계산기
첫 번째 숫자를 입력하세요 : 5
첫 번째 숫자를 입력하세요 : 0
계산기를 이용해주셔서 감사합니다.
Traceback (most recent call last):
File "/Users/prao/Desktop/DEV.PRAO/pythonworkspace/practice.py", line 15, in <module>
print("{0} / {1} = {2}".format(num1, num2, int(num1 / num2)))
ZeroDivisionError: division by zero
Process finished with exit code 1
→ 에러가 발생하여도 출력된다.
반응형
'기타 > Python' 카테고리의 다른 글
[Python] 모듈 (0) | 2023.03.23 |
---|---|
[Python] 자동 주문 시스템 실습 - 나도코딩 (0) | 2023.03.23 |
[Python/파이썬] 부동산 프로그램 만들기 실습 - 나도코딩 (1) | 2023.03.23 |
[Python] 스타크래프트 게임 만들기 - 나도코딩 (0) | 2023.03.23 |
[Python] 파이썬의 기본 문법 (0) | 2023.03.22 |