我有一个请求某些特定数据的功能。我还有一个函数,它的输入,如果是它应该是什么,它分配给变量从它被调用。
问题是,如果我得到一个错误的值,那么它总是会返回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
给变量它是从调用。
如果我给出正确的答案是第一次,它的工作原理。如果我给在首位一个错误的答案这是行不通的。
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
你必须从递归调用返回的值。你不会扔掉这样的功能的结果正常,递归是不是真的很特别,它只是一个函数调用。