You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python随机偶数生成函数多次运行偶现None的原因排查

为啥你的随机偶数函数偶尔会输出None?

嘿,这问题我熟!咱们来一步步拆解:

问题根源

你写的递归函数里藏了个小坑:当生成的n是奇数时,你确实调用了randomeven()去重新生成,但没有把这个递归调用的结果返回出去。

Python里有个默认规则:如果函数执行完所有代码都没碰到return语句,就会自动返回None。举个具体场景你就懂了:

  1. 第一次调用randomeven(),生成了奇数,进入else分支,调用randomeven()
  2. 第二次调用生成了偶数,return这个偶数
  3. 但第一次调用的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:21:01