在python中,当参数数据类型为NaN时,如何返回NaN而不是TypeError

在python中,当参数数据类型为NaN时,如何返回NaN而不是TypeError,python,nan,Python,Nan,e、 我定义了一个需要几个输入参数的函数,如果一些关键字参数没有被分配,通常会有一条TypeError消息,但是我想改变它,输出一个NaN作为结果,可以吗 def myfunc( S0, K ,r....): if S0 = NaN or .....: 怎么做? 非常感谢 编辑: def myfunc(a): return a / 2.5 + 5 print myfunc('whatever') >python -u "bisectnewton.py" Traceb

e、 我定义了一个需要几个输入参数的函数,如果一些关键字参数没有被分配,通常会有一条TypeError消息,但是我想改变它,输出一个NaN作为结果,可以吗

def myfunc( S0, K ,r....):
    if  S0 = NaN or .....:
怎么做? 非常感谢

编辑:

def myfunc(a):
    return a / 2.5 + 5

print myfunc('whatever')

>python -u "bisectnewton.py"
Traceback (most recent call last):
  File "bisectnewton.py", line 6, in <module>
    print myfunc('whatever')
  File "bisectnewton.py", line 4, in myfunc
    return a / 2.5 + 5
TypeError: unsupported operand type(s) for /: 'str' and 'float'
>Exit code: 1
我想要的是,myfunca只接受一个数字作为输入,如果其他一些数据类型,如字符串='whatever'输入,我不想只输出一个默认错误消息,我希望它输出类似于返回'NaN'的内容,告诉其他人输入应该是一个数字

现在我把它改成了这个,但还是不起作用, 顺便说一句,这和楠不一样吗?我觉得他们不一样

def myfunc(S0):
    if math.isnan(S0):
        return 'NaN'
    return a / 2.5 + 5

print myfunc('whatever')

>python -u "bisectnewton.py"
Traceback (most recent call last):
  File "bisectnewton.py", line 8, in <module>
    print myfunc('whatever')
  File "bisectnewton.py", line 4, in myfunc
    if math.isnan(S0):
TypeError: a float is required
>Exit code: 1

谢谢

您可以捕获TypeError并对其执行任何操作:

def myfunc(a):
  try:
    return a / 2.5 + 5
  except TypeError:
    return float('nan')

print myfunc('whatever')

在这个主题上有一个很好的章节。

您可以捕获TypeError并对其执行任何操作:

def myfunc(a):
  try:
    return a / 2.5 + 5
  except TypeError:
    return float('nan')

print myfunc('whatever')
def myfunc(S0 = None, K = None, r = None, ....):
    if S0 is None or K is None or r is None:
        return NaN

在这个主题上有一个很好的章节。

是的,要生成一个NaN,您需要浮动'NaN':

def myfunc(S0 = None, K = None, r = None, ....):
    if S0 is None or K is None or r is None:
        return NaN

所以你可以在任何你想返回nan的地方返回float'nan'。不过,我建议您只引发异常。

是的,要生成一个NaN,您可以使用浮点'NaN':


所以你可以在任何你想返回nan的地方返回float'nan'。不过,我建议您提出例外情况。

回答之后,我意识到您的问题并不完全清楚。你能提供一个简短的5-10行就足够了,完整的程序运行并演示你看到的错误吗?考虑如何生成程序的指南。使用Mas.iSnAN函数检查S0是否为Na。不,没有一个与NANI不一样。回答后,我意识到您的问题还不完全清楚。你能提供一个简短的5-10行就足够了,完整的程序运行并演示你看到的错误吗?考虑如何生成程序的指南。使用Mas.iSnAN函数检查S0是否为Na。不,没有一个与Na相同。谢谢,它工作!但不管它返回的是哪种类型的类型错误,如果不是因为输入数据类型错误,而是由于其他类型错误,该怎么办?而且,教程很好!谢谢,它很管用!但不管它返回的是哪种类型的类型错误,如果不是因为输入数据类型错误,而是由于其他类型错误,该怎么办?而且,教程很好!谢谢,我也想提出例外情况。只是作业要求如此,我一定会问我的教授。谢谢,我也愿意提出例外。这就是作业的要求,我一定会问我的教授。