我想得到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的例外是ZeroDivisionError
:
>>> 1/0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
如果你试图处理异常,执行:
except ZeroDivisionError as e:
而不是尝试匹配异常描述。
如果这个答案没有涵盖你,请详细说明你的需求是什么以及为什么,这样我们才能帮助你。
PS一个naïve完成你似乎要求的方法:
>>> 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
我相信你有理由想要特定的错误信息(可能是为了理解float
与int
的划分),所以我将解决这个问题。
尽管只有一个除零异常(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"
消息。