线性搜索解决方案

时间:2017-02-05 13:52:33

标签: python search linear

我编写了以下线性搜索解决方案。程序要求用户输入名称,并搜索列表以查看该名称是否存在。如果它存在,那么将告知用户。否则,将告知用户。

popularNames = ["Andrew","Ben","Charles","David","Ethan","Fred"]
found = False
index = 0

name= input ("Please enter the name you wish to search for:\n")

while found == False and index <7:
    if name == popularNames[index]:
        found = True
    index = index +1
if found == True:
    print(name,"is in the list.")
else:
    print(name,"is not in the list.")

但是程序不会打印“找不到名称”的消息,而是打印语法错误(见下文)。

  

第8行,在   如果name == popularNames [index]:IndexError:列表索引超出范围

我哪里错了?

1 个答案:

答案 0 :(得分:0)

问题

index < 7表示仍在考虑索引6

您的数组有6个元素,但索引从零开始:从0到5。

解决方案

您不应该硬编码76。您可以使用len(popularNames) - 1

实际上,您根本不需要使用索引。迭代列表:

for name in popularNames:
  # do stuff with name

您不必手动迭代:

if name in popularNames:
    print(name,"is in the list.")
else:
    print(name,"is not in the list.")