Python3 - 我的线性搜索程序的一般帮助

时间:2018-02-19 06:39:08

标签: python python-3.x search linear

所以我试图让这个线性搜索工作,对于学校。我一直在尝试一个小时,似乎无法找出它为什么不起作用!有人可以帮我一把吗?这是代码:

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。对不起,如果我做错了什么。这是我的第一篇文章!

5 个答案:

答案 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