为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的递归python函数不返回?

为什么我的递归python函数不返回?

呼如林 2019-05-30 17:35:38
为什么我的递归python函数不返回?我有一个叫做自己的函数: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_varprint('got input:', get_input())现在,如果我只输入“a”或“b”,一切正常:Type "a" or "b": a got input: a但是,如果我键入其他内容,然后再输入“a”或“b”,我就会得到以下内容:Type "a" or "b": purple You didn't type "a" or "b". Try again. Type "a" or "b": a got input: None我也不知道原因get_input()正在回归None,因为它只应该返回my_var。这个在哪里?None我是从哪里来的,我该如何修复我的功能?
查看完整描述

4 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

它又回来了None因为当您递归地调用它时:

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

.你不归还价值

因此,当递归确实发生时,返回值就会被丢弃,然后从函数的末尾掉下来。从函数末尾掉下来意味着python隐式返回。None就像这样:

>>> def f(x):...     pass>>> print(f(20))None

所以,而不是仅仅呼叫 get_input()在你的if声明,您需要return它:

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


查看完整回答
反对 回复 2019-05-30
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

若要返回除None以外的值,需要使用RETURE语句。

在您的示例中,if块只在执行一个分支时执行返回。要么将返回移到if/etc块之外,要么在这两个选项中都有返回。


查看完整回答
反对 回复 2019-05-30
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

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.')
        return get_input()
    else:
        return my_varprint('got input:', get_input())


查看完整回答
反对 回复 2019-05-30
?
波斯汪

TA贡献1811条经验 获得超4个赞

我觉得你应该用同时循环.

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

考虑到您键入的内容与“a”和“b”不同,当然,它会调用get_input但是它跳过了下一部分。即:

else:
    return my_var

将直接进入:

print('got input:', get_input())

因此,如果您将while循环用作:

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

这样我觉得你能处理好。


查看完整回答
反对 回复 2019-05-30
  • 4 回答
  • 0 关注
  • 949 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信