我想做一个循环,给出从 10 到 1 的阶乘。
所以我有这个代码:
factorial = 1
for i in range(1,11):
factorial = factorial * i
print(i,'!=', factorial)
但这显示了这样的结果:
1 != 1
2 != 2
3 != 6
但是我希望他们这样:
10 != 3628800
9 != 362880
8 != 40320
我尝试了一些不同的东西,但没有任何效果,请问有什么想法吗?
最佳答案
results = []
factorial = 1
for i in range(1,11):
factorial = factorial * i
results.append('{:2,}! = {:,}'.format(i, factorial))
print('\n'.join(reversed(results)))
输出:
10! = 3,628,800
9! = 362,880
8! = 40,320
7! = 5,040
6! = 720
5! = 120
4! = 24
3! = 6
2! = 2
1! = 1
为了减少所需的内存量,您可以这样做:
results = []
factorial = 1
for i in range(1, 11):
factorial *= i
results.append(factorial)
for i, value in enumerate(reversed(results)):
print('{:2,}! = {:,}'.format(len(results)-i, value))
如果你喜欢列表推导式,也可以用这种有点hacky的方式来完成:
res = []
res = [res[-1] for x in range(1, 11) if not res.append(x*res[-1] if res else 1)]
for i, value in enumerate(reversed(res)):
print('{:2,}! = {:,}'.format(len(res)-i, value))
关于python - 向后打印阶乘?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53131156/