除了边缘情况,除以零异常

时间:2017-03-14 00:44:16

标签: python python-3.x integer-division divide-by-zero

我试图在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:错误:

1 个答案:

答案 0 :(得分:1)

<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect"
      [class.is-checked]="val == 1">

您的>>> "0" == 0 False 语句测试与if的相等性,但在您进行计算之前不会转换为int,因此您的0测试总是会通过因为它将字符串与整数进行比较。

(这假设您的堆栈输入是字符串;如果它们不是那么您可能不需要!=调用 - 但事实上您将分区的结果添加到堆栈中一根弦让我相信他们是。)