我编写一个函数已经有一段时间了,它依赖于许多其他函数来返回答案。当我完成它时,它说我在某个地方错误地使用了“*”。我经历了一切,但看不出有什么问题。最后发现是因为之前定义了一个简单的阶乘函数,如下所示:
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 = 6,它会返回 6 是一个 float ,从而退出函数的其余部分,我希望有人能回答为什么会发生这种情况以及如何解决它。
非常感谢
最佳答案
elif n < 0 or (type(float)):
即使n >= 0
,(type(float))
部分也会返回float
的type
> 这是非空值或真值。因此,条件总是会满足。您需要的是,isinstance
elif n < 0 or isinstance(n, float):
但我建议,
elif not isinstance(n, int) or n < 0:
现在,如果 n
不是 int
,则会抛出错误。
关于Python 错误识别 int 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21969453/