我编写了以下线性搜索解决方案。程序要求用户输入名称,并搜索列表以查看该名称是否存在。如果它存在,那么将告知用户。否则,将告知用户。
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:列表索引超出范围
我哪里错了?
答案 0 :(得分:0)
index < 7
表示仍在考虑索引6
。
您的数组有6个元素,但索引从零开始:从0到5。
您不应该硬编码7
或6
。您可以使用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.")