线性搜索 - 将整数与列表匹配

Linear Search - Matching integer with list

大家好,我是 python 的新手,这是我正在尝试做的事情,我有下面的列表。

x= [1,2,3,4,5,6,7,8,9]

这是我的 python 代码:

length = len(x)
c = input("Enter a no\n")

for i in range (length):
    if  x[i] == c:
        print ("Found at position ", i)
    else:
        print("not found")

并且正在接收输出。

Enter a no
2
not found
not found
not found
not found
not found
not found
not found
not found
not found

现在,我知道的很少,我发现这个 multiple not found 正在发生,因为每次循环都不检查列表,如果它不可用,则由于缺少适当的 beak 语句 但是我无法弄清楚当它在 x[i] 中进行匹配时,输出应该是 Found at position 1 。我在某处读到需要使用 if c in x[i] 但它没有用。另一方面,我重新编写了代码。

def ls():
    t = int(input("Enter your search no \n"))
    for i in x:
        if i!= t:
            continue
        print("Your value is present in ")

        break
    else:
        print ("parrrrrrrrrrr")

ls()

一切正常。如果我能了解一下会有帮助:

  1. 因为输入returns你一个str对象然后和int对象比较没有隐式转换,所以表达式总是False.
  2. c in x 其中 x 是一个列表有效,但 x[i] 在您的情况下是一个整数
  3. 第二个代码有效,因为您将输入隐式转换为 int

我认为最优雅的方式是:

c = input("Enter a no\n")
items = [1,2,3]
print(items.index(int(c)) if int(c) in items else 'Not found')

如果输入不能转换为整数,当然不要忘记捕捉 ValueError