Python列表奇数求和:使用function/return改写代码无法运行如何解决
错误排查
- 循环逻辑错误:使用
range(1,len(numbers))生成的是列表的索引序列,而非列表内的元素,且索引从1开始遍历,遗漏了第一个元素的判断 - 判断条件错误:当前判断的是索引值是否为奇数,而非列表内存储的数值是否为奇数
- 作用域与调用错误:
odds是函数内部的局部变量,外部无法直接访问,且代码未主动调用定义好的add_up_the_odds函数,逻辑完全没有执行
修复方案
修复后完整代码
def add_up_the_odds(numbers): odds = [] # 直接遍历列表内的元素,而非索引 for number in numbers: # 判断数值是否为奇数 if number % 2 == 1: odds.append(number) return odds numbers = [1,5,3,2] # 主动调用函数获取奇数列表后求和 result = add_up_the_odds(numbers) print(sum(result))
简化写法(可选)
如果不需要单独保留奇数列表,可直接在遍历过程中求和,代码更简洁:
def add_up_the_odds(numbers): total = 0 for number in numbers: if number % 2 == 1: total += number return total numbers = [1,5,3,2] print(add_up_the_odds(numbers))
内容的提问来源于stack exchange,提问作者Polina99
相关产品推荐
相关产品推荐

