【问题标题】:ValueError Exception值错误异常
【发布时间】:2021-12-09 02:54:54
【问题描述】:

我要解决的问题似乎很简单:取 2 个整数输入,user_num 和 div_num,然后将它们分开,然后使用 try/except 块捕获异常。语言是 python

对于除以零,输出:除零异常:整数除或模除以零

假设输入 user_num=15.5 和 div_num=5,对于 ValueError,输出如下:输入异常:int() 的无效文字,基数为 10:'15.5'

这个问题也给了我们这个: 注意:当发生被零除时会抛出 ZeroDivisionError 。当用户输入与程序中定义的数据类型不同的值时,将引发 ValueError。不要在程序中包含任何抛出异常的代码

计算和除以零按预期工作,但我的 ValueError 异常不起作用。我理解错误(我定义了一个整数,但给了它一个浮点数),但我对如何让程序做我需要的事情感到困惑。这是我所拥有的:

user_num=int(input())
div_num=int(input())

try:
    print(int(user_num/div_num))
except ZeroDivisionError:
    print("Zero Division Exception: integer division or modulo by zero")
except ValueError:
    print("Input Exception: invalid literal for int() with base 10:", user_num)

我得到的错误是:

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'

任何帮助将不胜感激使 ValueError 异常工作

【问题讨论】:

  • 您需要将 try/except 放在 input() 调用周围,而不是除法。
  • 回溯显示错误是由转换触发的,在try块之外。
  • 修复了它,非常感谢!我现在更了解这一点

标签: python exception try-catch


【解决方案1】:

对于遇到此问题的任何人的未来参考,这就是我设法开始的工作。该错误是因为初始 (int(input()) 首次输入值时没有任何错误处理。下面是我发现可以工作并处理我遇到的任何内容。它首先尝试将将字符串转换为整数。如果不能,那么它将在开始时抛出错误而不是在开始时。我相信它可能会更干净一些,但我对编程还是很陌生。

user_num=input()
div_num=input()
try:
    print('{:.0f}'.format(int(user_num)/int(div_num)))
except ZeroDivisionError:
    print("Zero Division Exception: integer division or modulo by zero")
except ValueError:
    pass
try: int(div_num)
except ValueError:
    print("Input Exception: invalid literal for int() with base 10:"+" 
'"+str(div_num)+"'")
try: int(user_num)
except ValueError:
    print("Input Exception: invalid literal for int() with base 10:"+" 
'"+str(user_num)+"'")

【讨论】:

    猜你喜欢
    • 2012-08-16
    • 2021-07-25
    • 2016-05-05
    • 1970-01-01
    • 2015-02-27
    • 2017-03-31
    • 2020-08-21
    • 2013-12-15
    • 2012-07-06
    相关资源
    最近更新 更多