1. 程式人生 > >每日一練 no.9

每日一練 no.9

問題:

求1+2!+3!+…+20!的和

解答:

方法一: 使用for迴圈:

n = 0
s = 0
t = 1
for n in range(1,21):
    t *= n
    s += t
print(s)

方法二: 構建函式,使用map,reduce(注意:python3的reduce函式在functools中)

from functools import reduce
l = range(1,21)
def factorial(x):
    lt = range(1, x+1)
    r = reduce(lambda x,y: x*y ,lt)
    return r
s =
sum(map(factorial,l)) print (s)

方法三: 使用 math包 中的階乘函式

from math import factorial
l = range(1,21)
s = sum(map(factorial,l))
print(s)

或是numpy中的

import numpy as np
l = range(1,21)
s = sum(map(np.math.factorial,l))
print(s)