2017-09-13 108 views
-1
i = input("Enter number",) 
for i in range(i): 
    i= i *(i+1) 
    print(i) 

我正尝试使用上面的代码为用户输入的任何数字生成一个因子。我如何用上面的代码实现这一点,而不使用python析因函数。我怎么也可以用阶乘函数来做到这一点?Python 3.5因子

+0

请创建一个[mcve]。通过样品输入,显示实际的代码和当前/期望的结果。 –

回答

1

您正在修改i而迭代它。你可以尝试:

i = int(input("Enter number",)) 
f = 1 
for j in range(i): 
    f = f * (j+1) 

print(f) 
+0

它给出了错误消息:TypeError:'str'对象不能被解释为整数 –

+0

我在我的代码中添加了输入到int的转换 – Harald

2

你可以做递归也以这种方式

def recur_factorial(n): 
    """Function to return the factorial 
    of a number using recursion""" 
    if n == 1: 
     return n 
    else: 
     return n*recur_factorial(n-1) 

print recur_factorial(5) 

您可以输入从用户在整数的形式,然后通过在阶乘函数

0

虽然使用递归,你应该使用尾递归函数,如

def factorial2(x, fac): 
    if x == 1: 
    return fac 
    else: 
    return factorial2(x-1, x*fac) 

factorial2(value_here,1) 

您可以使用内置功能与简单:

import math 
math.factorial(value_here) 
+0

不需要括号。 – miradulo

+0

是的,但我总是使用当我可以,也许它从数学,但我真的很喜欢事情 – zero

+0

当然,但它是不好的Python风格。 – miradulo

2

使用此功能math.factorial(value)python进口math库。