有人可以给我看一个好的阶乘代码吗?

时间:2019-02-04 16:33:49

标签: python python-3.x

我刚刚开始研究Python。我必须使用Python3.7。 有人可以告诉我一个有效的阶乘代码吗? 我尝试了一些我在这里找到的东西,但我总是收到此错误:

=================== RESTART: C:\programozás\pytutorial.py ===================

代码:

def factorial(n):

      result = 1

      for i in range(1, n + 1):

            result *= i

      return result

4 个答案:

答案 0 :(得分:2)

即使您可以简单地使用math库,您的代码也可以正常工作:

import math
print(math.factorial(5))

问题不是出自您的脚本,所以也许您应该尝试重新安装python,并避免使用Adam Toth指出的带有特殊字符的路径。

  

更新:获取输入并按照评论中的要求返回阶乘

import math
print(math.factorial(int(input(">>"))))

答案 1 :(得分:1)

最有可能是由于在.py文件的路径中包含特殊字符引起的。因此,应使用C:\ programming之类的文件夹,或不带特殊字符的任何内容(如“á”)。

做到这一点非常重要,即使它不能解决您当前的问题,也可以在将来预防更多问题。



Ps .:Jókiszúrnimagyarprogramozót是:)

答案 2 :(得分:0)

我看到一个与此错误有关的(旧)线程here

对于逻辑: 我们必须考虑:

  1. 负数
  2. 正数

一种写法是:

def factorial(n):
 if n < 0:
    result = "Factorial doesn't exist for negative numbers"
 elif n == 0:
    result = 1
 else:
    result = 1
    for i in range(1, n + 1):
        result *= i
 return result

您也可以尝试递归的概念。

要获取数字“ num”的阶乘:

print(factorial(num))

确保正确缩进代码,缩进在python中很重要。

希望有帮助!

答案 3 :(得分:0)

使用递归函数的阶乘 Python 代码:

def factorial(n):
    if n <= 1:
        return 1
    else:
        return n * factorial(n-1)

factorial(5)
<块引用>

注意:第一个条件仅在输入为 0 或 1 时满足,并且在 else 块中 n 将递归乘以 n * n - 1< /strong>。