Python 异常处理程序不起作用,我不明白为什么

问题描述 投票:0回答:2

我得到了 ZeroDivisionError 异常的分数,但没有得到 ValueError 异常的分数....不确定我的异常语句有什么问题。在我的菜鸟眼中,它看起来是正确的。如有任何帮助,我们将不胜感激。

LAB:简单整数除法 - 多个异常处理程序

编写一个程序,读取整数 user_num 和 div_num 作为输入,并且 输出商(user_num 除以 div_num)。使用 try 块 执行所有语句。使用 except 块来捕获任何 ZeroDivisionError 并输出异常消息。使用另一个除了 阻止捕获由无效输入引起的任何 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
python exception exceptionhandler
2个回答
1
投票

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)

0
投票

如果您想打印“错误”,而不必输入原始帖子中的整个句子,请查看此片段。我确保用楼层除法运算符“//”来除 number1 和 number2,以获得作业要求的正确消息。希望这有帮助!

# Type your code here.

try:
    number1 = int(input())
    number2 = int(input())
    answer = number1 // number2
    print(int(answer))

# Exceptions #   
except ZeroDivisionError as ZDE:
    print('Zero Division Exception:', ZDE)

except ValueError as VE:
    print('Input Exception:',VE)
© www.soinside.com 2019 - 2024. All rights reserved.