我是python的新手,我需要创建一个阶乘函数。我已经创建了一个函数,它给出了一个数字的阶乘,但是我想从stackflow社区获得一些帮助。
这是我的代码
a = 5
b = 1
for i in range(1,a+1):
b = b * i
print b
这是我的输出:
我得到120(阶乘值),但我也得到其他值,如1,2,6。我怎么才能打印阶乘值而不是其他值。
答案 0 :(得分:1)
您可以在Python中使用Math
库,请尝试以下代码
import math
math.factorial(5)
答案:120
或者,
在你的代码中,你试图在循环中打印'b',所以你在每个循环时间内获得打印,只需将print b
放在循环的外侧
a = 5
b = 1
for i in range(1,a+1):
b = b * i
print b
答案 1 :(得分:0)
取消print
语句,使其仅在循环后执行,而不是在每个步骤中执行。
a = 5
b = 1
for i in range(1,a+1):
b = b * i
print b
答案 2 :(得分:0)
只是为了向您展示一种不同的方法:
def fact(n):
return reduce(lambda accum, element: accum * element, range(1, n+1), 1)
print fact(5) # prints 120
答案 3 :(得分:0)
如果你需要编写一个函数,那么你会想要更像这样的东西:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
这会递归计算阶乘。如果你想要一个迭代函数,那么下面将会这样做:
def factorial(n):
res = 1
for i in range(1, n+1):
res *= i
return res
否则,如果您不需要自己创建函数,则可以导入数学库并使用math.factorial(n)。
答案 4 :(得分:0)
因子最好使用生成器函数计算。要检索最后一项,您可以使用deque。
def factorial(n):
ct = 1
factor = 1
while ct <= n:
yield factor
ct = ct+1
factor = factor * ct
from collections import deque
x = deque(factorial(10), maxlen=1).pop()
x
3628800