【发布时间】:2018-03-16 21:01:00
【问题描述】:
正在开发一个程序,以可视化田地中植物的生长。调用一个函数,在此处输入代码返回一个值,如下所示:
Field = InitialiseField()
然后是函数:
def InitialiseField(): #function that gives the user a choice of creating a blank field or loading a text file
def validate():
Response = input('Do you want to load a file with seed positions? (Y/N): ')
if Response.upper() == 'Y':
Field = ReadFile() #creates a multidimensional array based on an external text file
return Field
elif Response.upper() == 'N':
Field = CreateNewField() #generates new field with a single seed
return Field
else:
print('Please enter either N/n or Y/y')
validate()
return validate() #return the updated field
当用户输入有效响应(N/n 或 Y/y)时,程序会继续按预期运行。但是,当用户输入无效响应然后输入有效响应后 InitialiseField() 函数返回 NoneType 对象而不是第二个响应?
当用户输入无效响应时,将调用 validate() 函数,我假设它在完成后从第一个循环返回 NoneType 对象,然后第二个循环返回正确的值 - 我该如何解决这个问题?
TypeError: 'NoneType' object is not subscriptable
【问题讨论】:
-
为什么将
validate包裹在InitialiseField中?是否在这些函数之外定义了任何变量集? -
masterfloda 对生存问题有正确的答案 v,但实际上这不是对递归的适当使用。循环直到你得到一个值输入;这也将避免对嵌套函数的需要。
标签: python python-3.x function return