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

为何Python函数if分支返回字符串,else递归调用后返回None?

问题原因

你的代码里,当输入不符合要求进入else分支时,虽然递归调用了start(),但没有把递归调用的结果返回出去,导致当前的start()函数执行完后默认返回None。所以哪怕第二次输入正确,最终赋值给user的还是None,调用list(user)自然会报错。

修复方案

方案1:修复递归的返回逻辑

在else分支里添加return,把递归调用的结果返回:

def start():
    word = input("Enter word to turn into a list: ")
    if word.isalpha():
        word = word.lower()
        return word
    else:
        print("Alpha only please")
        return start()  # 添加return传递递归结果

user = start()
word_list = list(user)
print(word_list)

方案2:用循环代替递归(更推荐)

递归处理用户输入容易出现栈溢出风险(比如用户多次输入错误),用while循环更稳妥:

def start():
    while True:
        word = input("Enter word to turn into a list: ")
        if word.isalpha():
            return word.lower()
        print("Alpha only please")

user = start()
word_list = list(user)
print(word_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 22:20:33