有什麼辦法在發生異常之後停止所有操作?(Python)如何在ZeroDivisionError之後停止計算
例如,我創建了一個反向波蘭表示法計算器(用於學習postfix),並且如果我的字符串中存在「0」,我想確保「不能被零除」。
我得到它做我想使用嘗試/除了。
我試圖在我的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)
什麼意思是「停止一切」?你想提出一個例外的調用函數?你想立即返回一個值嗎?你想完全退出python嗎? –
是的,這可能是措辭不佳。如果出現0並且出現分割(即發生ZeroDivisionError),我希望打印出「不能被零除」,就是這樣。 目前我收到一些不會發生的錯誤,除非在除零的情況下。也就是說,如果我的列表中沒有[0,「/」],程序運行完美。 – DudeWah