为何我的代码无法分别计算列表奇偶和并返回预期新列表?
问题分析与修复方案
原代码的核心问题
- return语句位置错误:
return sum_num写在for循环内部,导致循环刚执行第一次就直接返回结果,所以输出只有[1]。 - 累加逻辑错误:代码里
even +=1和odd +=1是在统计奇偶数字的个数,而不是计算它们的数值和,应该改成累加元素本身的值。 - 结果列表构建错误:每次循环都往sum_num里添加计数,而非最后将计算好的奇偶和汇总成目标列表。
修正后的代码
class Solution(object): def calculate_odd_even(self, li): even_sum = 0 odd_sum = 0 for num in li: if num % 2 == 0: even_sum += num else: odd_sum += num # 最后返回[奇数和, 偶数和] return [odd_sum, even_sum] if __name__ == "__main__": p = Solution() lit = [1, 2, 4, 5] print(p.calculate_odd_even(lit)) # 输出: [6, 6]
修正说明
- 把return语句移到for循环外部,确保遍历完所有元素后再返回结果。
- 将
even +=1改为even_sum += num,odd +=1改为odd_sum += num,实现数值求和而非计数。 - 遍历完成后,将奇数和、偶数和组成列表返回,符合需求格式。
内容的提问来源于stack exchange,提问作者user20502753
相关产品推荐
相关产品推荐

