Python 错误识别 int 值

标签 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:
    return (n)*fact(n-1)

但是,如果我输入 n = 6,它会返回 6 是一个 float ,从而退出函数的其余部分,我希望有人能回答为什么会发生这种情况以及如何解决它。

非常感谢

最佳答案

elif n < 0 or (type(float)):

即使n >= 0(type(float))部分也会返回floattype > 这是非空值或真值。因此,条件总是会满足。您需要的是,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/

相关文章:

python - Python 中的线程/队列

python - 如何从github python安装 "sparse_dot_topn"

python - 使用连续高于 x 的列值将 pandas df 分成组

math - float 学有问题吗?

python - 计算每个数字的4次方之和,为什么会得到错误的结果?

计算阶乘的 Prolog 代码

C++ try catch 抛出

python - 如何对 pandas 数据框地理定位进行切片

c - 如果固定部分和小数部分分开存储,如何将定点数相乘?

haskell - 如何通过 Control.Arrow.loop 实现阶乘?