我想得到 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)
uj5u.com熱心網友回復:
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
uj5u.com熱心網友回復:
我相信你有理由想要特定的錯誤訊息(也許是為了理解floatvsint劃分),所以我會解決這個問題。
盡管只有一個被零除的例外 ( 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"訊息。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/324103.html
上一篇:如何撰寫plsql例外陳述句以要求用戶以特定格式提供輸入
下一篇:處理例外時如何避免部分執行代碼?
