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

时间:2017-09-10 20:02:41

标签: python linear-search

你是我的新手python这里是我想要做的,我有下面这个列表。

override func viewDidAppear(_ animated: Bool) {
    topConstraint.constant = -topView.frame.height  // or whatever you want
    view.layoutIfNeeded()
    UIView.animate(withDuration: 0.5, delay: 1, animations: {
        topConstraint.constant = 0
        self.view.layoutIfNeeded()
    })
}

这是我的python代码:

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

并且输出正在接收。

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")

现在我很少知道我发现的是这个多重未找到的事情正在发生,因为每次循环都不对列表进行检查,如果它不可用,由于缺少正确的{{1语句但是当它在x [i] 中匹配时,无法确定输出应该是Enter a no 2 not found not found not found not found not found not found not found not found not found 。我读到某处需要使用beak,但它没有用。在手上我重新编写了代码。

Found at position  1

这一切都很好。如果我能够了解它将会有所帮助:

  • 使用第一个程序,为什么即使输入显示在列表中也没有找到
  • 输入x [i] 中 c的部分同样的问题根据我的知识发生(现在没有意义)它也应该工作
  • 如果是整数与列表的情况,那么我的第二个代码是如何工作的 - 这是进行线性搜索的必要方法。

1 个答案:

答案 0 :(得分:0)

  1. 因为输入会返回一个str对象,然后与int对象进行比较而不进行隐式转换,因此表达式始终为False
  2. c in x其中x是列表有效,但x[i]是您的整数
  3. 第二个代码正在运行,因为您将输入隐式转换为int
  4. 我认为最优雅的方式是:

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

    当然,如果输入无法转换为整数

    ,请不要忘记捕获ValueError