为何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
相关产品推荐
相关产品推荐

