Python编写提取集合中奇数并忽略非数值元素的函数及报错解决
代码问题排查
你的代码存在以下几处核心错误:
- 循环内操作对象错误:遍历得到的单个元素是
i,但你所有判断、运算都是针对整个输入参数x,自然会出现类型报错 - 类型校验逻辑错误:仅判断了
int类型,不符合题目要求的兼容布尔值、整数型浮点数的规则 - 逻辑判断顺序错误:先执行取模运算再校验类型,遇到非数值类型时必然触发运算报错
- 功能不符要求:没有定义结果收集容器,仅打印内容没有返回值,不符合函数返回列表的要求
修正后的代码
def odd_numbers1(x): res = [] for i in x: # 先校验是否为数值类型 if not isinstance(i, (int, float)): continue # 浮点类型需要先判断是否为整数 if isinstance(i, float): if not i.is_integer(): continue # 判断是否为奇数 if i % 2 != 0: res.append(i) return res
代码验证
- 调用
odd_numbers1([1,2,3,3,'3']),返回结果为[1, 3, 3],符合示例1要求 - 调用
odd_numbers1([False,True,3,5.0,7.5]),返回结果为[True, 3, 5.0],符合示例2要求
内容的提问来源于stack exchange,提问作者Alex Markides
相关产品推荐
相关产品推荐

