Python odd_finder函数统计正奇数数量时count累加器结果错误问题
代码错误原因
- 遍历对象错误
你写的for number in range(10)遍历的是0、1、2……9这10个固定整数,和你传入函数的10个参数完全无关。示例测试时你实际统计的是0-9范围内的奇数总数,共1、3、5、7、9五个,自然输出结果为5,和输入参数没有关联。你需要把传入的10个参数整合成可遍历的序列再进行遍历。 - 运算符使用错误
- 你使用的
&是位运算符,Python中表示逻辑“与”需要用and。位运算符优先级高于比较运算符,你写的number % 2 != 0 & number >= 0实际运算顺序完全不符合预期,逻辑判断完全失效。你后续把判断条件改为number>0后输出0,就是因为&优先级过高,实际运算后判断逻辑等效为(number%2 !=0) and (0>0),0>0永远不成立,所以计数一直是0。 - 正奇数的判断条件应为大于0且除以2余数不为0,你用
>=0会将0纳入判断范围,0不是正数,不符合需求。
- 返回值不符合要求
需求明确要求函数返回计数结果,你原代码直接用print输出,调用函数时无法拿到统计结果,不符合要求。
修正后代码
def odd_finder(a,b,c,d,e,f,g,h,i,j): count = 0 # 遍历所有传入的参数 for number in [a,b,c,d,e,f,g,h,i,j]: # 用and做逻辑与判断,符合正奇数的要求 if number > 0 and number % 2 != 0: count += 1 # 返回计数结果 return count # 测试示例输入 print(odd_finder(1,2,3,4,5,-1,-2,-3,-4,0)) # 输出结果为3,符合预期
内容的提问来源于stack exchange,提问作者Hisoka kun
相关产品推荐
相关产品推荐

