所以我试图让这个线性搜索工作,对于学校。我一直在尝试一个小时,似乎无法找出它为什么不起作用!有人可以帮我一把吗?这是代码:
flag = False
index = 0
location = 0
array = [43, 26, 19, 80, 17, 2]
print('What item are you searching for?')
print("""
Items:
- 43
- 26
- 19
- 80
- 17
- 2
""")
itemSearch = int(input('> '))
while index <= 5:
if array[index] == itemSearch: #not being activated
location = array[index]
flag = True
else:
index = index + 1
if flag == False:
print ('No match found')
else:
print (str(itemSearch) + ' found at ' + location + '.')
P.S。对不起,如果我做错了什么。这是我的第一篇文章!
答案 0 :(得分:0)
在Python中,您可以通过以下方式检查值是否在列表中:
if itemSearch in array:
print('{} found at {}.').format(itemSearch, array.index(itemSearch))
答案 1 :(得分:0)
在您的代码中,您正在记录项目值,而不是其位置。 location = array[index]
必须为location = index
。
您尝试实施的行为已由函数index()
提供:
itemSearch = int(input('> '))
if itemSearch in array:
print('{} found at {}.').format(itemSearch, array.index(itemSearch))
else:
print('No match found')
不需要对列表进行双遍遍的替代实现:
itemSearch = int(input('> '))
try:
print('{} found at {}.').format(itemSearch, array.index(itemSearch))
except ValueError:
print('No match found')
作为旁注,您的array
不是数组而是列表。
答案 2 :(得分:0)
您可以使用pythonic方式
>>> array = [43, 26, 19, 80, 17, 2]
>>> array.index(43)
0
>>> array.index(26)
1
例如:
>>> itemSearch = int(input("Enter number : "))
Enter number : 80
>>> print (str(itemSearch) + ' found at ' + str(array.index(itemSearch)) + "." )
80 found at 3.
答案 3 :(得分:0)
我认为你几乎就在那里,我在运行你的代码时注意到了一些错误,当找到itemSearch时它运行在一个无限循环中,并且位置应该是索引,添加这几个更改将使它按预期工作我认为
flag = False
index = 0
location = 0
array = [43, 26, 19, 80, 17, 2]
print('What item are you searching for?')
print(""" Items:
- 43
- 26
- 19
- 80
- 17
- 2
""")
itemSearch = int(input('> '))
while index <= 5:
if array[index] == itemSearch: #not being activated
print(itemSearch)
location = index
flag = True
break
else:
print("index")
print(index)
index = index + 1
if flag == False:
print ('No match found')
else:
print ('{} found at location {} .'.format(itemSearch,location))
答案 4 :(得分:0)
以下是您的代码中的问题: -
while index <= 5:
if array[index] == itemSearch: #not being activated
location = index #take index only not array value
flag = True
break