'''
【程序25】 题目:求1+2!+3!+...+20!的和
1.程序分析:将每个数累乘的结果再累加起来。
解法一,比较省时间,只算一遍21的阶乘,前面的每个数为中间结果
解法二,把每个数都算了一遍阶乘,再求和。
'''
'''
2.知识点
sum(iterable[, start])
将对序列求和,要求是一个数字的序列,start默认为0,表示序列起始下标。
map(function, iterable, ...)
取出序列的每一元素作为function的参数,得到的以function结果为元素的序列。
如果序列不止一个,则每次次取出所有序列的一个元素,作为function的参数,因此function
参数的数目必须和序列数一致。
'''
#Python3.3.5
#方法一
n = 0
s = 0
t = 1
for n in range(1,21):
t *= n
s += t
print('1! + 2! + 3! + ... + 20! = %d'%s)
#方法二
s = 0
l = range(1,21)
def op(x):
r = 1
for i in range(1,x + 1):
r *= i
return r
s = sum(map(op,l))
print('1! + 2! + 3! + ... + 20! = %d'%s)