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

递归生成不重复ID时函数返回None值的原因探究

问题原因与修复方案

问题根源

你遇到的None返回问题,核心是递归调用时没有传递返回值。当生成的value和输入的ID相同时,你调用了generateNumber(value),但没有把这个递归调用得到的结果return出去。函数执行到这一步后,没有后续的return语句,Python就会默认返回None。

另外还有个冗余问题:你把generateNumber函数定义放在了while True循环内部,每次循环都会重新定义一次函数,完全没必要,反而容易引发意外问题。

修复后的递归版本代码

import random

# 把函数定义移到循环外,避免重复定义
def generateNumber(existing_id):
    value = random.randint(1, 2)
    if value != existing_id:
        return value
    # 递归调用时必须return,把结果传递回上层
    return generateNumber(value)

while True:
    a = int(input('Enter a data: '))
    print("->", generateNumber(a))

更直观的非递归版本

其实这种场景用循环比递归更合适,避免不必要的函数调用层级,代码逻辑也更易懂:

import random

def generateNumber(existing_id):
    while True:
        value = random.randint(1, 2)
        if value != existing_id:
            return value

while True:
    a = int(input('Enter a data: '))
    print("->", generateNumber(a))

内容的提问来源于stack exchange,提问作者XharonX

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:05:06