728x90
:: 파이썬 과제 - try / except 활용 ::
1. 계산기 심화
try / except
1. 계산기 심화
요구조건
- 클래스를 활용해 작성했던 계산기 코드를 활용해주세요
- 기존처럼 사용자의 입력을 받고 출력하되, try / except를 활용해 사용자의 입력을 검증하는 코드를 추가해주세요
- 두 번쨰 숫자에 0을 입력하고 나누기를 시도할 경우 “0으로 나눌 수 없습니다” 문구를 출력해주세요
- 숫자가 아닌 다른 값을 입력했을 경우 “숫자만 입력 가능합니다” 라는 문구를 출력해 주세요
풀이)
# 클래스 함수 선언
class Calc():
# def __init__(self): # __init__ 함수로 선택 목록을 인스턴스 실행시 보여준다.
# print("\n"
# ":: 목록 ::\n"
# "===========================\n"
# "1.계산기\n"
# "0.Quit\n"
# "===========================\n")
def operator(self, num1, operator, num2): # 계산할 수와 기호를 받아오는 메소드
self.num1 = num1 # 숫자 1
self.num2 = num2 # 숫자 2
self.operator = operator # 기호
if operator == "+": # 더하기 메소드
self.num3 = self.num1 + self.num2
return self.num3
elif operator == "-": # 빼기 메소드
self.num3 = self.num1 - self.num2
return self.num3
elif operator == "*": # 곱하기 메소드
self.num3 = self.num1 * self.num2
return self.num3
elif operator == "/": # 나누기 메소드
try: # try / except 활용하여 나누기 메소드에 예외처리
self.num3 = self.num1 / self.num2
return self.num3
except ZeroDivisionError: # error 중에 0으로 나오는 error 처리
self.zero_error = "0으로는 나눌수 없습니다." # 출력할 텍스트도 변수에 담아 처리
return self.zero_error # print는 None이라는 값을 추가로 출력하기 때문에 이렇게 return으로 처리
except:
pass
def On_Off() : # 반복문에서 종료, 재시작을 선택하는 함수
result = int(input("\n"
"Off(1) - 종료 / On(2) - 재시작 : "))
if result == 2:
pass
elif result == 1:
print("종료합니다.")
quit() # 종료하는 함수
# input에 들어가는 메세지를 정리
input_msg_01 = "\n:: 계산기 ::\n===========================\n'A * B' 형식으로 수식을 입력하세요 : "
error_msg_01 = "\n:: 사칙연산 목록 ::\n===========================\nA + B\nA - B\nA * B\nA / B\n===========================\n양식을 지켜서 다시 입력하세요.\n"
while True :
print("\n"
":: 목록 ::\n"
"===========================\n"
"1.계산기\n"
"0.Quit\n"
"===========================\n")
N = int(input("목록에서 원하는 번호를 입력하세요 : "))
if N == 1 :
while True :
calc = Calc() # 인스턴스 생성
try : # try / except 활용하여 잘못된 input값 예외처리
num1, operator, num2 = input(input_msg_01).split()
equality = calc.operator(int(num1), str(operator), int(num2))
except:
print(error_msg_01) # Error 메시지 출력
continue
if equality == "0으로는 나눌수 없습니다." : # 0으로 나눌시 받아온 메소드 값 예외처리
print(equality)
else :
print(f"정답 : {num1} {operator} {num2} = {equality}\n" # 정상
"===========================\n"
"\n")
On_Off() # 반복문에서 종료, 재시작을 선택하는 함수
elif N == 0 :
print("종료합니다.")
break
else :
print("잘못 입력하셨습니다.")
실행 예시)
:: 목록 ::
===========================
1.계산기
0.Quit
===========================
목록에서 원하는 번호를 입력하세요 : 1 # <-- 입력 --
:: 계산기 ::
===========================
'A * B' 형식으로 수식을 입력하세요 : 100 + 32 # <-- 입력 --
정답 : 100 + 32 = 132
===========================
Off(1) - 종료 / On(2) - 재시작 : 2 # <-- 입력 --
:: 계산기 ::
===========================
'A * B' 형식으로 수식을 입력하세요 : 30 /4 # <-- 입력 --
:: 사칙연산 목록 ::
===========================
A + B
A - B
A * B
A / B
===========================
양식을 지켜서 다시 입력하세요. # Error 메시지
:: 계산기 ::
===========================
'A * B' 형식으로 수식을 입력하세요 : a - b # <-- 입력 --
:: 사칙연산 목록 ::
===========================
A + B
A - B
A * B
A / B
===========================
양식을 지켜서 다시 입력하세요. # Error 메시지
:: 계산기 ::
===========================
'A * B' 형식으로 수식을 입력하세요 : 100 / 0 # <-- 입력 --
0으로는 나눌수 없습니다. # Error 메시지
:: 계산기 ::
===========================
'A * B' 형식으로 수식을 입력하세요 : 439 * 43 # <-- 입력 --
정답 : 439 * 43 = 18877
===========================
Off(1) - 종료 / On(2) - 재시작 : 1 # <-- 입력 --
종료합니다.
종료 코드 0(으)로 완료된 프로세스
728x90
반응형
'coding > Project' 카테고리의 다른 글
[Python] 활용편 - 09 - 조건문 활용(if, elif, else, 등급표) (0) | 2022.09.15 |
---|---|
[Python] 활용편 - 08 - list, filter, sort 활용(리스트 필터 및 정렬) (0) | 2022.09.14 |
[Python] 활용편 - 06 - Class 함수(3)(프로필 관리 기능 만들기) (0) | 2022.09.13 |
[Python] 활용편 - 05 - Class 함수(2)(계산기 만들기 with class) (0) | 2022.09.13 |