例外の後にすべてを停止する方法はありますか?(Python)ZeroDivisionErrorの後に計算を停止する方法
たとえば、私はポストフィックスを学ぶために逆ポーランド記法電卓を作成しています。文字列に「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)
「すべてを停止する」とはどういう意味ですか?あなたは呼び出し関数の例外を発生させますか?値をすぐに戻したいですか?あなたは完全にPythonを終了したいですか? –
はい、それはうまく言葉にされていない可能性があります。 0が発生し、除算が発生すると(つまり、ZeroDivisionErrorが発生した場合)、「ゼロで割り切れない」という印字をしたいと思います。 現在、ゼロ除算以外のいくつかのエラーが発生しています。言い換えれば、私のリストに[0、 "/"]がなければ、プログラムは完璧に動作します。 – DudeWah