在函数

时间:2018-03-16 21:01:00

标签: python python-3.x function return

制作一个可视化田​​间植物生长的程序。调用一个函数来输入代码,其值如下:

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

1 个答案:

答案 0 :(得分:3)

您的问题标题中有答案:-)您需要return validate()的值:

      print('Please enter either N/n or Y/y')
      return validate()

如果不这样做,您的方法不会返回任何值,其值为is None

另外,您可能希望阅读Python Styleguide:使用小写字符表示函数。