理解 ValueError:python 中的“无效数字”
Posted
技术标签:
【中文标题】理解 ValueError:python 中的“无效数字”【英文标题】:Understanding the ValueError: "Invalid numbers" in python 【发布时间】:2020-08-17 18:01:04 【问题描述】:我有以下问题:
定义一个名为 exce_sum 的函数,用于返回两个参数的和 但是如果两个参数都是 0,函数应该引发一个异常,说“无效数字” 异常需要有 ValueError() 类,并且异常的返回类型必须是字符串。 使用 try 和 except。
我写了以下代码:
def exce_sum(x,y):
if x==0 and y==0:
raise ValueError("Invalid numbers")
try:
z=x+y
return(z)
except:
return("the return type of the exception must be a string")
当我写函数 exce_sum(0,0)
我收到错误 ValueError: Invalid numbers
而不是 ValueError: "Invalid numbers"
。
但是,我不知道如何接收错误 ValueError: "Invalid numbers"。
提前感谢您的帮助
【问题讨论】:
【参考方案1】:把这个改成
if x==0 and y==0:
raise ValueError("Invalid numbers")
这个
if x==0 and y==0:
raise ValueError('"Invalid numbers"')
【讨论】:
【参考方案2】:我认为您无论如何都不应该打印双引号 :) 当异常被打印到控制台时,消息通常不包含在双引号中。
以下应该可以解决问题(您有一个不必要的 try-except 块):
def exce_sum(x, y):
if x == 0 and y == 0:
raise ValueError("Invalid numbers") # if you still want the quotes use '"Invalid numbers"'
z = x + y
return str(z)
【讨论】:
【参考方案3】:您的问题的解决方案可能是
def exce_sum(num1,num2):
try:
if (num1 == 0 and num2 == 0):
raise ValueError("Invalid Numbers")
else:
return num1 + num2
except ValueError as error:
print(error)
exce_sum(0,0)
【讨论】:
以上是关于理解 ValueError:python 中的“无效数字”的主要内容,如果未能解决你的问题,请参考以下文章
Python asyncio/aiohttp:ValueError:Windows 上 select() 中的文件描述符过多
ValueError:检查目标时出错:预期activation_6具有形状(无,2)但得到的数组具有形状(5760,1)
ValueError:层顺序的输入0与层不兼容::预期的min_ndim = 4,发现ndim = 2。收到的完整形状:(无,1024)