首页 > 后端开发 > Python教程 > 如何防止 Python 中的递归函数不返回任何值?

如何防止 Python 中的递归函数不返回任何值?

DDD
发布: 2024-12-21 02:21:11
原创
713 人浏览过

How Can I Prevent Recursive Functions from Returning None in Python?

解决递归函数中的 None 返回问题

处理递归函数时,确保正确的返回处理对于避免意外的 None 值至关重要。考虑以下反复提示用户输入“a”或“b”的函数:

def get_input():
    my_var = input('Enter "a" or "b": ')

    if my_var != "a" and my_var != "b":
        print('You didn\'t type "a" or "b". Try again.')
        get_input()
    else:
        return my_var

print('got input:', get_input())
登录后复制

当用户正确输入“a”或“b”时,该函数将按预期工作,但如果他们输入任何其他字符,该函数都会打印一条错误消息并递归调用自身。但是,递归调用未正确返回收集的输入。

问题是由于当输入不是“a”或“b”时递归调用未通过 return 语句终止而引起的。 Python 将此解释为到达函数末尾并隐式返回 None。此行为类似于:

def f(x):
    pass
print(f(20))  # Implicitly returns None
登录后复制

要解决此问题,必须修改 if 语句以返回递归 get_input() 调用的结果:

if my_var != "a" and my_var != "b":
    print('You didn\'t type "a" or "b". Try again.')
    return get_input()
登录后复制

通过合并此调整后,即使用户输入错误的字符,该函数也会正确返回输入,然后更正输入。

以上是如何防止 Python 中的递归函数不返回任何值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板