为什么我的python函数返回none(第一次它会返回true,但递归函数调用自己,然后它会返回none)

nuypyhwy  于 4个月前  发布在  Python
关注(0)|答案(2)|浏览(59)

此问题在此处已有答案

Why does my recursive function return None?(4个答案)
已关闭

def login(log = 1):
    
    con = input(f"{na} are you Ready for the game Yes/NO ")
    if ((con == "Yes")or(con == "yes")or(con == "y")or(con == "Y")):
        print("\nwelcome to The Game") # first time it will return true but recursive function call itself then it will return none 
        return True

    elif(log == 3):
        print("retry after long time")
    else:
        print("Retry again")
        log = log + 1
        login(log)

flag = login()
print(flag)

预期输出:flag = True
输出:flag = None

5lwkijsr

5lwkijsr1#

非常接近,你只需要在递归调用中缺少一个return语句,这样,从它成功的时候开始,返回值就可以返回到原始调用,我在这里展示了。

def login(log=1):
    con = input(f"{na} are you Ready for the game Yes/NO ")
    if ((con == "Yes") or (con == "yes") or (con == "y") or (con == "Y")):
        print("\nwelcome to The Game")  
        return True

    elif (log == 3):
        print("retry after long time")
    else:
        print("Retry again")
        log = log + 1
        return login(log) # this line required the return

na = 'YOURNAME'
flag = login()
print(flag)

字符串
如果你有任何问题,请告诉我。
正如@stephan在评论中指出的那样,这里还有另一个问题需要更多的解释:Why does my recursive function return None?

u3r8eeie

u3r8eeie2#

@BitsAreNumbersToo,你是正确的,但是当最后一次重试被触发时,你错过了另一次返回。
最后一个条件(当log = 3时)是只打印并返回None,这就是为什么您会收到None输出。

def login(log=1):
    con = input(f"{na} are you Ready for the game Yes/NO ")
    if ((con == "Yes") or (con == "yes") or (con == "y") or (con == "Y")):
        print("\nwelcome to The Game")  
        return True

    elif (log == 3):
        print("retry after long time")
        return True #Or whatever return value you need
    else:
        print("Retry again")
        log = log + 1
        return login(log) # this line required the return

na = 'YOURNAME'
flag = login()
print(flag)

字符串
如果你有什么问题就告诉我

相关问题