我还是初学者所以请耐心等待。所以我试图从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>
答案 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