我的程序接受来自用户的3个输入:姓名,人口和县。这些细节成为一个数组,然后附加到另一个数组。然后,用户输入县名,并显示相应的城镇详细信息。
我在函数searchList
中收到有关索引超出范围的错误。
def cathedralTowns():
def searchList(myCounty, myList): #search function (doesn't work)
index = 0
for i in myList:
myList[index].index(myCounty)
index += 1
if myList[index] == myCounty:
print(myList[index])
records = [] #main array
end = False
while end != True:
print("\nEnter the details of an English cathedral town.")
option = input("Type 'Y' to enter details or type 'N' to end: ")
if option == 'Y':
name = input("Enter the name of the town: ")
population = int(input("Enter the population of the town: "))
county = input("Enter the county the town is in: ")
records.append([name, population, county]) #smaller array of details of one town
elif option == 'N':
print("Input terminated.")
end = True
else:
print("Invalid input. Please try again.")
print(records) #just for checking what is currently in records array
end = False
while end != True:
print("\nEnter the name of an English county.")
option = input("Type 'Y' to enter county name or type 'N' to end: ")
if option == 'Y':
searchForCounty = input("Enter the name of a county: ")
searchList(searchForCounty, records) #searchList function takes over from here
elif option == 'N':
print("Input terminated.")
end = True
else:
print("Invalid input. Please try again.")
cathedralTowns()
答案 0 :(得分:1)
您应该修改searchList
功能:
def searchList(myCounty, myList):
for entry in myList:
if entry[2] == myCounty:
print("Town: {}, population: {}".format(entry[0], entry[1]))
在Python中,当您迭代列表时,实际上会遍历其元素,因此
for entry in myList
迭代每个"记录"在你的清单中。然后,由于您正在查找某个县,即每个记录中的第三个元素,因此请使用entry[2]
对其进行索引,以将其与您的查询进行比较,即myCounty
。
有关示例记录的示例输入,例如:
records = [['Canterbury', 45055, 'Kent'], ['Rochester', 27125, 'Kent'], ['Other', 3000, 'Not Kent']]
的输出
searchList('Kent', records)
是:
>>> Town: Canterbury, population: 45055
>>> Town: Rochester, population: 27125