我试图在python3.5中手动处理除零异常,但是,它一直忽略我的用户定义的情况并给出默认异常。我怎么能避免这个?任何帮助表示赞赏。
注意:我使用列表作为堆栈,因此是最后一个并检查顶部元素是否为0.此外,订单是正确的 - 我故意将顶级元素作为分母
elif 'div' in command:
if len(stack)!=0 and len(stack)!=1 and is_digit(stack[len(stack)-2]) and is_digit(stack[len(stack)-1]) and stack[len(stack)-1]!=0:
op2 = stack.pop();
op1 = stack.pop();
stack.append(str( int(int(op1) / int(op2)) ) + '\n');
else:
stack.append(':error:\n');
这给了 ZeroDivisionError:除以零INSTEAD:错误:
答案 0 :(得分:1)
<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect"
[class.is-checked]="val == 1">
您的>>> "0" == 0
False
语句测试与if
的相等性,但在您进行计算之前不会转换为int,因此您的0
测试总是会通过因为它将字符串与整数进行比较。
(这假设您的堆栈输入是字符串;如果它们不是那么您可能不需要!=
调用 - 但事实上您将分区的结果添加到堆栈中一根弦让我相信他们是。)