功能犯错后第一时间返回NoneType

问题描述 投票:0回答:1

我有一个请求某些特定数据的功能。我还有一个函数,它的输入,如果是它应该是什么,它分配给变量从它被调用。

问题是,如果我得到一个错误的值,那么它总是会返回NoneType对象,就算我得到了很好的回答了第二次。

我试图消除clear()。我试图添加更多的回报,即使答案不应该通过。我尝试添加第二个参数与可变我试图分配一个值的名称运作

def ask_input_string(text):

    ''' Takes only one argument. This function asks for input when it is called and returns the value but with the argument provided as text. '''

    variable=input(text)
    if variable=="":
        print("\nField must not be empty")  
        ask_input_string(text)
    try:
        int(variable)
        print("\nPlease enter a name!")
        ask_input_string(text)

    except ValueError:
        return variable

def menu_add():
    clear()

    print("\nPlease add the data required!\n")

    nume=ask_input_string("Name of animal: ")

    animal_type=ask_input_string("\nAnimal Type: ")

预期结果:

如果我添加一个错误的值,它要求正确的。我给正确的,并将其分配给变量它是从调用。

实际结果:

如果我给了错误的答案至少1次,那么即使我得到正确的一个,它会始终分配NoneType给变量它是从调用。

如果我给出正确的答案是第一次,它的工作原理。如果我给在首位一个错误的答案这是行不通的。

python python-3.x function recursion nonetype
1个回答
1
投票
def ask_input_string(text):
    variable = input(text)
    if variable == "":
        print("\nField must not be empty")
        return ask_input_string(text)

    try:
        int(variable)
        print("\nPlease enter a name!")
        return ask_input_string(text)
    except ValueError:
        return variable

你必须从递归调用返回的值。你不会扔掉这样的功能的结果正常,递归是不是真的很特别,它只是一个函数调用。

© www.soinside.com 2019 - 2024. All rights reserved.