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
相关产品推荐
相关产品推荐

