Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python错误识别int值_Python_Math_Factorial - Fatal编程技术网

Python错误识别int值

Python错误识别int值,python,math,factorial,Python,Math,Factorial,一段时间以来,我一直在编写一个函数,该函数依赖于许多其他函数来返回答案。当我写完它时,它说我在某处错误地使用了“*”。我检查了所有的东西,没有发现任何问题。我最终发现这是因为前面定义了一个简单的阶乘函数,如下所示: if n == 0: return 1 elif n < 0 or (type(float)): print "%s is an invalid input; Positive integer value is required" % (n) else:

一段时间以来,我一直在编写一个函数,该函数依赖于许多其他函数来返回答案。当我写完它时,它说我在某处错误地使用了“*”。我检查了所有的东西,没有发现任何问题。我最终发现这是因为前面定义了一个简单的阶乘函数,如下所示:

if n == 0:
    return 1
elif n < 0 or (type(float)):
    print "%s is an invalid input; Positive integer value is required" % (n)
else:
    return (n)*fact(n-1)
如果n==0:
返回1
elif n<0或(类型(浮动)):
打印“%s”是无效输入;需要正整数值“%(n)
其他:
申报表(n)*事实(n-1)
然而,如果我输入n=6,它返回6是一个浮点数,因此退出函数的其余部分,我希望有人能够回答为什么会发生这种情况以及如何绕过它


非常感谢

您的第二个条件应该是
isinstance(n,float)

但我建议

elif not isinstance(n, int) or n < 0:
elif不存在(n,int)或n<0:

现在,如果
n
不是
int
,则会抛出错误。

type(float)
返回一个类型,因此它始终为true是的,完成了,谢谢。谢谢你的快速反应
>>> isinstance(1.0, float)
True
>>> isinstance(1, float)
False
>>> type(float)
<type 'type'>
elif n < 0 or (type(float)):
elif n < 0 or isinstance(n, float):
elif not isinstance(n, int) or n < 0: