在python中,当参数数据类型为NaN时,如何返回NaN而不是TypeError
e、 我定义了一个需要几个输入参数的函数,如果一些关键字参数没有被分配,通常会有一条TypeError消息,但是我想改变它,输出一个NaN作为结果,可以吗在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
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相同。谢谢,它工作!但不管它返回的是哪种类型的类型错误,如果不是因为输入数据类型错误,而是由于其他类型错误,该怎么办?而且,教程很好!谢谢,它很管用!但不管它返回的是哪种类型的类型错误,如果不是因为输入数据类型错误,而是由于其他类型错误,该怎么办?而且,教程很好!谢谢,我也想提出例外情况。只是作业要求如此,我一定会问我的教授。谢谢,我也愿意提出例外。这就是作业的要求,我一定会问我的教授。