本文来源于粉丝私信的问题,目的在于计算result = 1!+2!+3!+...+n!,因为代码比较简单,没加注释,有问题可以留言交流。文中给出了2段代码,在实际使用时应优先考虑使用第一段,第二段仅用来验证,涉及大量重复计算,效率极低。

def factorialBefore(n):
    result, t = 1, 1
    for i in range(2, n+1):
        t *= i
        result += t
    return resultdef verify(n):
    from math import factorial
    result = 0
    for i in range(1, n+1):
        result += factorial(i)
    return resultfrom random import randrange
for i in range(10000):
    n = randrange(1, 1000)
    if factorialBefore(n) != verify(n):
        print(n, 'error')

运行结果:无输出,表示两段代码计算结果一致。