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

Python实现add_even_numbers偶数求和函数代码纠错求助

代码错误原因
  • 核心问题1:逐字符遍历的逻辑有漏洞,每个字符串末尾的数字没有被判断和累加:你写的elif i==x[-1]分支永远不会执行,因为非|的字符已经被前面的if i!="|"分支拦截,不会走到后面的elif判断里。
  • 核心问题2:遇到分隔符|时,只有当前数字是偶数才会清空num缓存,如果是奇数的话num不会重置,会导致后续的数字拼接错误。
  • 冗余问题:定义的accepted变量完全没有被使用,属于无效代码。
修正后代码(更简洁的实现,直接用字符串拆分方法,避免逐字符遍历的逻辑漏洞)
def add_even_numbers(str_list):
    total = 0
    for s in str_list:
        # 按|拆分每个字符串得到所有数字字符串
        num_strs = s.split('|')
        for num_str in num_strs:
            num = int(num_str)
            # 偶数累加
            if num % 2 == 0:
                total += num
    return total

如果你坚持要保留逐字符遍历的实现思路,修正后的版本如下:

def add_even_numbers(str_list):
    int_num = 0
    for x in str_list:
        num = ""
        for i in x:
            if i != "|":
                num = num + i
            else:
                # 不管是不是偶数都要清空num缓存
                if int(num) % 2 == 0:
                    int_num += int(num)
                num = ""
        # 遍历完当前字符串所有字符后,处理最后一个数字
        if int(num) % 2 == 0:
            int_num += int(num)
    return int_num
测试结果

上述两种实现跑你提供的所有测试用例,结果均符合预期:

  • 测试用例1返回62,符合预期
  • 测试用例2返回0,符合预期
  • 测试用例3返回12,符合预期
  • 测试用例4返回0,符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:39:00