-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
계산값 안나와요,,
21.05.07 11:34 작성 조회수 92
1
- 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("계산기를 이용해주셔서 감사합니다.")
이렇게 했는데 정상적인 값을 적으면 계산값이 안나오는데 어디가 문제가있는걸까요...?
답변을 작성해보세요.
2
2
uki020226
2021.05.07
try 안에 보면,
if num1 >= 10 or num2 >= 10:
num1, num2 둘다 10보다 크거나 같을떄 에만
print("{0} / {1} = {2}".format(num1, num2, int(num1 / num2)))
이 결과가 나옵니다.
즉, 10보다 작은 숫자를 입력하면 결과가 나오지 않죠....
그런데, 문제는
BigNumberError
로 인해서, 10보다 크거나 같은 수를 입력하게 되면,
print("에러가 발생하였습니다. 한자리 숫자만 입력하세요.")
를 출력하겟지요.
의도하신대로, 결과가 나오기 위해서는
print("{0} / {1} = {2}".format(num1, num2, int(num1 / num2)))
의 구문을 if 바깥으로 뺴서, 작성하시면 됩니다. 그러니까. 10보다 작아도 이 계산을 시행 할 수 있도록,. if 바깥으로 뺴는겁니다.
그러니까.
if num1 >= 10 or num2 >= 10:
raise BigNumberError("입력값 : {0}, {1}".format(num1, num2))
print("{0} / {1} = {2}".format(num1, num2, int(num1 / num2)))
이렇게요.
아래의 원문과 비교해보세요.
if num1 >= 10 or num2 >= 10:
raise BigNumberError("입력값 : {0}, {1}".format(num1, num2))
print("{0} / {1} = {2}".format(num1, num2, int(num1 / num2)))
print가 탭이 어떻게 되어 있는가에 따라 결과가 달라집니다.
답변 2