python 3中的因子列表未运行

时间:2018-03-21 13:33:26

标签: python factorial

我还是初学者所以请耐心等待。所以我试图从1到5得到一个阶乘数列表。

factorial=[]
for i in range(1,5):
    for x in range(1,5):
        while(i>x):
            factorial.append(i*x)

当我切换出factorial.append用于打印时,它只是连续吐出2s,有没有人知道为什么,如果有的话该怎么做才能解决这个问题,还有什么其他可行的方法可以得到一个阶乘数列表? / p>

3 个答案:

答案 0 :(得分:1)

在这种情况下,我建议你使用递归函数:

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

例如:

>>>factorial(5)
120
>>>factorial(10)
3628800

答案 1 :(得分:1)

你可以这样做:

>>> f=[1]  # initialized your list 
>>> for i in range(5):  # take each value in the list [0,1,2,3,4] 
...     f.append(f[i]*(i+1)) #to create a next point multiply with the last value
... 
>>> f=f[1:] #don't keep the first (repeated) point
>>> f #you have your list !
[1, 2, 6, 24, 120]

答案 2 :(得分:0)

你的while循环陷入困境 如果您逐步完成代码,您将看到发生了什么:
在第一个循环中,i值为1,x值为1到5,因此i永远不会是>比x,因此你不会进入while循环。
在第二个循环开始时,i值为2,x值为1,因此您将输入while循环。
您将继续while循环,直到i变得低于或等于x,但这绝不会发生,因为要继续使用您需要的for循环首先退出while循环。

尽管有错误,但我不明白将你带到那里的原因。 正如@Julio CamPlaz的回答所示,处理阶乘的常用方法是递归,但理解以下内容可能更简单:

# in each for loop, you multiply your n variable for the i value
# and you store the result of the moltiplication in your n variable
n=1
for i in range(1,6): # if you want the numbers from 1 to 5, you have to increase by one your maximum value
    n = n*i

print n