首页 > 解决方案 > 值不断设置为无

问题描述

我有一个递归函数,它会调用自己,直到它得到正确的输入。

def input_something(prompt = ""):
    playerInput = input(prompt)
    if playerInput == "": 
        print("Error: No input")
        input_something(prompt)
    elif not playerInput.isspace():
        return playerInput
    else:
        print("Error: Incorrect input")
        input_something(prompt)

while True:
    print("Input Value")
    inp = input_something("> ")
    print(type(inp))
    print(inp)
    print("\n")

如果你给它一个正常的值,这个函数就可以正常工作,但是如果你先给它一个空字符串,然后给它一个字符/字符串,它就会中断。它没有按预期输出字符串,而是给出了 None 类型。

谁能解释一下?

标签: pythonpython-3.xrecursion

解决方案


您需要return递归调用的结果:

def input_something(prompt = ""):
    playerInput = input(prompt)
    if playerInput == "": 
        print("Error: No input")
        return input_something(prompt)
    elif not playerInput.isspace():
        return playerInput
    else:
        print("Error: Incorrect input")
        return input_something(prompt)

否则,递归调用的函数将运行但其返回值将被丢弃。请注意,您的原始功能不在return三个分支中的两个中。在 Python 中,不返回任何内容意味着返回的值为None.


推荐阅读