首页 > 解决方案 > 在循环中使用 math.factorial 写入 sum

问题描述

我正在尝试编写一个函数来计算这样的总和:

∑_(k=0)^n 1/k!

所以 n = 2 的预期结果: 1/factorial(0) + 1/factorial(1) + 1/factorial(2) = 1 + 1 + 0.5 + 2.5

我已经尝试过了,但它不起作用。我不知道为什么。我曾想过尝试将商保存为一个列表,然后对其求和,但这似乎不是一种有效的方法。

import math 
def test_fun(n:int)->int:
    Sn = 0
    k:int
    for k in range(0,n,1):
        Sn += 1/math.factorial(k)
        return(Sn)

test_fun(2)
Out[75]: 1.0

任何帮助都会很棒。提前致谢。

编辑:根据 Carcigenicate 的建议,未缩进返回(Sn)。还认为 range(0,2) 返回 0,1 而不是 0,1,2。现在一切都好!

def test_fun(x:int)->int:
    n = x+1
    Sn = 0
    for k in range(0,n,1):
        Sn = Sn + 1/math.factorial(k)
    return(Sn)

test_fun(2)

标签: python-3.xsum

解决方案


推荐阅读