【问题标题】:ZeroDivisionError: as 'integer division or modulo by zero' but get as 'division by zeroZeroDivisionError:作为“整数除法或模除以零”,但得到“除以零”
【发布时间】:2021-10-12 09:38:09
【问题描述】:

我想得到 ZeroDivisionError 的异常:作为“整数除法或模除以零”,但我得到的是“除以零”。我怎样才能得到它?

a=int(input())
b=[]
for i in range(a):
    b.append(list(input().split()))
    try:
        print(int(int(b[i][0])/int(b[i][1])))
    except Exception as e:
        print( "Error Code: ", e)

【问题讨论】:

  • 为什么?您在这里没有进行模运算。你在做一个分区。您收到的信息非常准确。

标签: python exception divide-by-zero


【解决方案1】:

我确定您有需要特定错误消息的理由(也许理解 floatint 部门),所以我会解决这个问题。

即使只有一个除以零异常 (ZeroDivisionError),它也会根据使用的类型和所涉及的操作给出不同的错误消息。

如果您尝试获取整数除法异常消息 ("integer division or modulo by zero"),则需要专门使用 // 而不是 / 执行整数除法。在除法之前或之后使用int() 将数字转换为整数不会使/ 执行整数除法。

作为一个示例,说明错误消息如何因所涉及的类型而异:

>>> 5 / 0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
>>> 5.0 / 0.0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: float division by zero
>>> 5 // 0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
>>> 5.0 // 0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: float divmod()

以上内容与 Python 3 相关。在 Python 2 中,/ 除分母为零的两个 int 对象将产生 "integer division or modulo by zero" 消息。

【讨论】:

  • 谢谢,整数除法工作“//”
  • 如果您对答案感到满意,请考虑单击旁边的复选标记,以便将问题标记为已解决。
【解决方案2】:

Python 异常是ZeroDivisionError:

>>> 1/0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero

如果您正在尝试处理异常,请执行以下操作:

except ZeroDivisionError as e:

而不是尝试匹配异常描述。

如果此答案未涵盖您,请详细说明您的需求和原因,以便我们为您提供帮助。

PS 一种天真的方式来完成您似乎在问的问题:

>>> try: 1/0
... except ZeroDivisionError:
...  raise ZeroDivisionError('integer division or modulo by zero')
... 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
ZeroDivisionError: integer division or modulo by zero

【讨论】:

  • "//" 整数除法工作,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-03
  • 2022-11-23
相关资源
最近更新 更多