Python错误,'TypeError:'NoneType'对象不可迭代'

时间:2015-04-08 19:22:48

标签: python

这是python所说的导致错误的代码。 这是我定义它的时候

   *def searchCounty(newlist):
        whatCounty = input("Which county are you looking for?\n")
        **for eachItem in newlist:**
                if whatCounty in eachItem[1]:
                    print("Town:", eachItem[0], ", County:", eachItem[1], ", Population:", eachItem[2], ", Area:", eachItem[3])*

这就是我回电话的地方。

allTowns = readsFile()
townsList = splitFile(allTowns)
userChoice = displayMenu()
if userChoice == "a":
    searchTown(townsList)    #calls function using the townsList created 3 lines above
elif userChoice == "b":
    **searchCounty(townsList)**
elif userChoice == "q":
    print("Goodbye!")
else:
    print("Invalid input please enter a, b or q")

请帮助。带有2个星号的行是导致错误的行。并且两个变量(allTowns和townsList)打印出一堆具有字符串和数字混合的列表,但是当第二个执行它时在屏幕上说没有。我猜分裂文件将大列表拆分成许多列表,因为这是allTowns最初的,因为老实说,我不确定它的作用。

2 个答案:

答案 0 :(得分:0)

基于你所说的,其中一个功能导致了一个问题:

allTowns = readsFile()
townsList = splitFile(allTowns)

当您尝试在searchCounty()内迭代时,citiesList被定义为无。

这是基本上发生的事情(就像在python shell中所做的那样):

>>> for i in None:
...     pass
... 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not iterable

所以你应该检查allTowns是否正确以及townsList。

答案 1 :(得分:0)

我认为你的问题出在这行代码中:

 if whatCounty in eachItem[1]:

你应该比较那里的平等而不是遏制。

 if whatCounty == eachItem[1]:

应该为您提供您想要完成的比较。