You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何结合Lambda使用while循环实现求和函数

问题背景

我正在学习Python,当前正在学习while循环相关知识点,虽然觉得这个问题比较基础理应自行解决,不好意思提问,但我确实对此存在很大困惑。
待补全的代码片段如下:

def summation(n, term):
    """Return the sum of numbers 1 through n (including n) with term applied to each number.
    Implement using recursion!

    >>> summation(5, lambda x: x * x * x) # 1^3 + 2^3 + 3^3 + 4^3 + 5^3
    225
    """
    assert n >= 1
    "*** YOUR CODE HERE ***"

    counter = 1
    while counter <= n:

同时需要while循环相关知识点的练习渠道推荐,之前搜索相关内容没有找到合适的资料。

代码补全方案

你现在写的是while迭代的实现框架,虽然函数注释标注了要求用递归实现,两种写法都给你参考:

基于while循环的迭代实现

你已经定义了从1开始计数的counter变量,只需要额外新增一个变量存储累加的总和,每次循环把当前计数传入term计算后的值加到总和上,再更新计数器避免死循环,循环结束后返回总和即可,补全代码如下:

def summation(n, term):
    assert n >= 1
    total = 0
    counter = 1
    while counter <= n:
        total += term(counter)
        counter += 1
    return total

用题目给出的测试用例运行即可得到225的正确结果。

符合注释要求的递归实现

递归实现只需要明确两个核心逻辑:

  • 基线条件:当n为1时,求和范围只有1,直接返回term(1)
  • 递归逻辑:1到n的求和结果,等于1到n-1的求和结果加上term(n)
    代码如下:
def summation(n, term):
    assert n >= 1
    if n == 1:
        return term(1)
    return summation(n-1, term) + term(n)
while循环练习建议
  • 先过一遍基础语法点:循环条件的判定规则、循环变量的更新逻辑、break和continue的作用差异、死循环的常见触发原因,每个知识点单独写几个最小demo验证,比如打印指定区间的奇数、计算整数阶乘、实现简单的猜数字交互小程序,先把基础逻辑摸熟
  • 基础语法掌握后,从简单的编程练习题入手练循环:比如统计字符串里数字字符的个数、判断一个数是不是回文数、打印九九乘法表、打印不同规则的星形图案,这类题对循环逻辑的训练很直接
  • 刚开始写循环容易漏写变量更新、写错循环边界,写之前可以先手动列2-3次循环内各个变量的变化过程,捋清楚流程再写代码,能避开大部分低级错误

内容的提问来源于stack exchange,提问作者ashton8504

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 05:36:26