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

Python递归函数首次返回True,后续递归调用返回None问题排查

递归函数返回None的修复方案

你的问题出在递归调用时没有返回函数的执行结果:当你在else分支里调用login(log)时,只是执行了这个函数,但没把它的返回值传递给上层调用。所以哪怕最内层的递归返回了True,这个值也不会传递到最初的调用,导致最终flag拿到的是None。

修复后的代码

def login(log = 1):
    # 注意:原代码里na变量未定义,需提前定义(比如na = "玩家")
    con = input(f"{na} are you Ready for the game Yes/NO ")
    if con.lower() in {"yes", "y"}:
        print("welcome to The Game")
        return True
    elif log == 3:
        print("retry after long time")
        # 明确返回值,避免默认返回None,可根据需求改为其他值
        return False
    else:
        print("Retry again")
        log = log + 1
        # 关键修改:加上return,让递归的返回值逐层传递到上层调用
        return login(log)

flag = login()
print(f"flag = {flag}")

核心修改说明

  • 在递归调用前添加return,确保内层函数的返回值能传递到最初的调用栈,最终让flag拿到正确结果。
  • 简化输入判断逻辑:用con.lower() in {"yes", "y"}替代多个or判断,代码更简洁易读。
  • 给log == 3的分支补充明确返回值,避免函数默认返回None,让逻辑更严谨。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 15:32:15