Cộng đồng Hỏi & Đáp của Inflearn
계산값 안나와요,,
Viết
·
247
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("계산기를 이용해주셔서 감사합니다.")
이렇게 했는데 정상적인 값을 적으면 계산값이 안나오는데 어디가 문제가있는걸까요...?
python
Quiz
41% người trả lời sai. Hãy thử ngay!
Xử lý ngoại lệ chủ yếu được sử dụng để làm gì?
Để tăng tốc độ thực thi mã
Để ngăn chương trình dừng đột ngột khi xảy ra lỗi
Để tự động hoàn thành tên biến
để cấu hình quyền truy cập CSDL
Câu trả lời 2
2
2
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가 탭이 어떻게 되어 있는가에 따라 결과가 달라집니다.





