Python随机偶数生成函数多次运行偶现None的原因排查
为啥你的随机偶数函数偶尔会输出None?
嘿,这问题我熟!咱们来一步步拆解:
问题根源
你写的递归函数里藏了个小坑:当生成的n是奇数时,你确实调用了randomeven()去重新生成,但没有把这个递归调用的结果返回出去。
Python里有个默认规则:如果函数执行完所有代码都没碰到return语句,就会自动返回None。举个具体场景你就懂了:
- 第一次调用
randomeven(),生成了奇数,进入else分支,调用randomeven() - 第二次调用生成了偶数,return这个偶数
- 但第一次调用的else分支里只是调用了函数,没把它的结果return出来,所以第一次调用的函数最终返回了
None,最后print的就是这个值
修复方法
只需要在else分支里加上return,把递归调用的结果传递回去就行:
import random def randomeven(): n=int(random.random()*100) if n%2==0: return n else: return randomeven() # 这里加上return! print(randomeven())
额外小建议
其实递归在这里不是最优解哦——万一运气特别差连续生成很多奇数,可能会触发Python的递归深度限制。换成循环写法更稳妥高效:
import random def randomeven(): while True: n = int(random.random() * 100) if n % 2 == 0: return n print(randomeven())
内容的提问来源于stack exchange,提问作者Giridher Sadineni
相关产品推荐
相关产品推荐

