我得到了 ZeroDivisionError 例外而不是 ValueError 例外的分數……不知道我的例外陳述句有什么問題。它看起來對我的菜鳥眼睛來說是正確的。任何幫助表示贊賞。
LAB:簡單整數除法 - 多個例外處理程式
撰寫一個程式,讀取整數 user_num 和 div_num 作為輸入,并輸出商(user_num 除以 div_num)。使用 try 塊來執行所有陳述句。使用 except 塊捕獲任何 ZeroDivisionError 并輸出例外訊息。使用另一個 except 塊來捕獲由無效輸入引起的任何 ValueError 并輸出例外訊息。
注意:當發生被零除時,會拋出 ZeroDivisionError。當用戶輸入與程式中定義的資料型別不同的值時,會引發 ValueError。不要在程式中包含引發任何例外的代碼。
例如:如果程式的輸入是:
15
3
程式的輸出是:
5
例如:如果程式的輸入是:
10
0
程式的輸出是:
Zero Division Exception: integer division or modulo by zero
例如:如果程式的輸入是:
15.5
5
程式的輸出是:
Input Exception: invalid literal for int() with base 10: '15.5'
我的代碼:
user_num = int(input())
div_num = int(input())
if isinstance(user_num,int) == False:
problem = user_num
elif isinstance(div_num,int) == False:
problem = div_num
try:
result = user_num/div_num
print(int(result))
except ZeroDivisionError:
print("Zero Division Exception: integer division or modulo by zero")
except ValueError:
print("Input Exception: invalid literal for int() with base 10: '{}'".format(problem))
輸入程式輸入(可選)
15.5
5
此處顯示的程式錯誤
Traceback (most recent call last):
File "main.py", line 1, in <module>
user_num = int(input())
ValueError: invalid literal for int() with base 10: '15.5'
1:比較輸出 2 / 2
輸入
15
3
你的輸出
5
2:比較輸出 2 / 2
輸入
15
0
你的輸出
Zero Division Exception: integer division or modulo by zero
3:比較輸出 0 / 2
Traceback (most recent call last):
File "main.py", line 1, in <module>
user_num = int(input())
ValueError: invalid literal for int() with base 10: '15.5'
輸入
15.5
5
你的輸出 你的程式沒有輸出
預期產出
Input Exception: invalid literal for int() with base 10: '15.5'
4:比較輸出 0 / 1
Traceback (most recent call last):
File "main.py", line 2, in <module>
div_num = int(input())
ValueError: invalid literal for int() with base 10: '0.5'
輸入
25
0.5
你的輸出
Your program produced no output
預期產出
Input Exception: invalid literal for int() with base 10: '0.5'
5:比較輸出 0 / 1
Traceback (most recent call last):
File "main.py", line 1, in <module>
user_num = int(input())
ValueError: invalid literal for int() with base 10: 'twenty'
輸入
twenty
5
你的輸出
Your program produced no output
預期產出
Input Exception: invalid literal for int() with base 10: 'twenty'
6:比較輸出 1 / 1
輸入
0
4
你的輸出
0
7:比較輸出 1 / 1
輸入
15
0
你的輸出
Zero Division Exception: integer division or modulo by zero
uj5u.com熱心網友回復:
user_num = int(input())并且div_num = int(input())需要進入一個try/except ValueError塊,因為呼叫int()是可能發生錯誤的地方。
您可以將整個內容放入try/except并捕獲多個例外:
try:
user_num = int(input())
div_num = int(input())
result = user_num/div_num
print(int(result))
except ValueError as e1:
print(e1)
except ZeroDivisionError as e2:
print(e2)
甚至:
try:
user_num = int(input())
div_num = int(input())
result = user_num/div_num
print(int(result))
except (ValueError, ZeroDivisionError) as e:
print(e)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/469983.html
下一篇:android.content.res.Resources$NotFoundException:字串資源ID#0x2b
