理解 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 中的“无效数字”的主要内容,如果未能解决你的问题,请参考以下文章

ValueError:字典包含不在字段名中的字段:无

Python asyncio/aiohttp:ValueError:Windows 上 select() 中的文件描述符过多

ValueError:检查目标时出错:预期activation_6具有形状(无,2)但得到的数组具有形状(5760,1)

ValueError:层顺序的输入0与层不兼容::预期的min_ndim = 4,发现ndim = 2。收到的完整形状:(无,1024)

Python中的ValueError:解压缩的值太多[重复]

Python ValueError:未知标签类型:“连续”