예외 발생 후 모든 것을 중지 할 수있는 방법이 있습니까?(Python) ZeroDivisionError 후 계산을 중지하는 방법
예를 들어, 후진 폴란드어 표기법 계산기 (후위를 배우기 위해)를 만들고 있는데, 문자열에 "0"이 있으면 "0으로 나눌 수 없습니다"가 출력되도록하고 싶습니다.
try/except를 사용하여 내가 원하는 것을 할 수있게되었습니다.
나는 예외적으로 내 print 문 뒤에 "break"를 넣으려고했으나 나의 마지막 "pop"이 루프 외부에 있기 때문에 분명히 도움이되지 않습니다. 그리고 그것은 분명히 "제로에 의한 나누기"연산이 수행되지 않았고 목록이 망가져 버린 것처럼 많은 추적 오류를 야기합니다.
아이디어가 있으십니까?
def RPN(ll):
mys = Stack()
for x in ll:
if x == '+':
sum_of_two = mys.new_pop() + mys.new_pop()
mys.push(sum_of_two)
"""mys.print_stack()""" #test addition
elif x == "*":
product = mys.new_pop() * mys.new_pop()
mys.push(product)
"""mys.print_stack()""" #test multiplication
elif x == "-":
subtrahend = mys.new_pop()
minuend = mys.new_pop()
subtrahend
minuend
difference = minuend - subtrahend
mys.push(difference)
"""mys.print_stack()""" #test subtraction
elif x == "/":
divisor = mys.new_pop()
dividend = mys.new_pop()
divisor
dividend
try:
quotient = dividend/divisor
mys.push (quotient)
except ZeroDivisionError:
print "Cannot divide by zero"
"""mys.print_stack()""" #test division
else:
mys.push(int(x))
return mys.new_pop()
example = [3,4,"-",5,"+",6,"*",0,"/"] #test reverse polish calc
print RPN(example)
"모든 것을 중지 하시겠습니까?" 호출 함수에 대한 예외를 발생 시키길 원합니까? 즉시 값을 반환 하시겠습니까? 파이썬을 완전히 종료 하시겠습니까? –
예, 저조한 말을했을 수도 있습니다. 0이 나오고 나누기가 발생하면 (예 : ZeroDivisionError가 발생하는 경우) '0으로 나눌 수 없습니다'라는 메시지가 인쇄됩니다. 현재 0으로 나누는 경우를 제외하고는 발생하지 않는 몇 가지 오류가 나타납니다. 즉, 내 목록에 [0, "/"]이 없으면 프로그램이 완벽하게 실행됩니다. – DudeWah