制作一个可视化田间植物生长的程序。调用一个函数来输入代码,其值如下:
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
答案 0 :(得分:3)
您的问题标题中有答案:-)您需要return
validate()
的值:
print('Please enter either N/n or Y/y')
return validate()
如果不这样做,您的方法不会返回任何值,其值为is None
另外,您可能希望阅读Python Styleguide:使用小写字符表示函数。