Python中析因函数
我如何去计算Python中的一个整数的阶乘?
最简单的方法: math.factorial(x) (可用于2.6及以上)。
如果你想/必须自己写,使用类似的东西
def factorial(n):return reduce(lambda x,y:x*y,[1]+range(1,n+1))
或更可读的东西:
def factorial(n): if n == 0: return 1 else: return n * factorial(n-1)
Google一如既往,是你的朋友;)
在Python 2.6及更高版本上,请尝试:
import math math.factorial(n)
没有必要,因为这是一个古老的线程。 但我在这里是另一种使用while循环计算整数的阶乘的方法。
def factorial(n): num = 1 while n >= 1: num = num * n n = n - 1 return num
现有的解决scheme
最短也许是最快的解决scheme是:
from math import factorial print factorial(1000)
build立你自己的
你也可以build立你自己的解决scheme。 一般来说,你有两种方法。 最适合我的是:
from itertools import imap def factorial(x): return reduce(long.__mul__, imap(long, xrange(1, x + 1))) print factorial(1000)
(它也适用于更大的数字,当结果变long
)
实现这一目标的第二种方式是:
def factorial(x): result = 1 for i in xrange(2, x + 1): result *= i return result print factorial(1000)
如果你正在使用Python2.5或更旧版本,请尝试
from operator import mul def factorial(n): return reduce(mul, range(1,n+1))
对于较新的Python,在这里的其他答案中给出了math模块中的阶乘
def factorial(n): if n < 2: return 1 return n * factorial(n - 1)
另一种使用for-loop计算阶乘的方法 –
def factorial(n): base = 1 for i in range(n,0,-1): base = base * i print base
你意思是:
def fact(n): f = 1 for i in range(1, n +1): f *= i return f
http://www.google.com/search?aq=0&oq=factorial+py&sourceid=chrome&ie=UTF-8&q=factorial+python
import math math.factorial( yourInt )
很多这些方法是非常好的,但我会说你最好的select是使用内置函数。 但是如果你想看看发生了什么,那么你自己也可以创造出一些非常容易创造的东西。 我提出的一个很快就和其中许多人一样。
def factorial(n): x = 1 li = list(range(1, n + 1)) for each in li: x = x * each print(x)
这是一个相当有效的代码,好处是如果你不想从列表中操纵一些数据,就会创build一个列表,尽pipe我不知道为什么你会这么做。
编辑:只是看到我张贴在一个旧的东西。 抱歉。
#use this code print("welcome to factoral program") factor = int(input("enter the number you want factors for")) factors = [] while factor > 0: factors.append(factor) factor -= 1 print(factors)