【问题标题】:so I have done a linear search code but when i input a number thats in the array it still gives prints (number has not been) why is that?所以我做了一个线性搜索代码,但是当我在数组中输入一个数字时,它仍然会打印(数字没有)为什么会这样?
【发布时间】:2021-10-12 17:13:29
【问题描述】:

你好,所以我必须做线性搜索程序,我已经在这里完成了

def linearsearch(arraydata,num):
    flag = False
    for i in range(0,len(arraydata)):
        if num == arraydata[i]:
            flag = True
        else:
            flag = False
    return flag
arraydata = [10,5,6,7,1,12,13,15,21,8]
num = int(input("please input the number you want to find: "))
returnvalue = linearsearch(arraydata,num)
if returnvalue == True:
    print("number has been found")
else:
    print("number has not been found")

但是每当我输入一个数组时,它仍然说没有找到数字,请任何人的帮助,我们将不胜感激

【问题讨论】:

  • 这不是二分搜索。
  • 是的,对不起,我改变了它:)

标签: python linear-search


【解决方案1】:

您的方法仅在最后一项等于该值时返回 true,因为您在每次迭代时都覆盖了标志。您应该在找到值后立即返回True,并在循环之后的最后返回False

def linearsearch(arraydata, num):
    for x in arraydata:
        if x == num:
            return True
    return False

您可以直接使用in 运算符来执行相同的任务。

def linearsearch(arraydata, num):
    return num in arraydata

【讨论】:

  • 哦,好的,我现在明白了,非常感谢您的帮助:)
  • @RishabhKalia 没问题。
  • @RishabhKalia 如果这回答了你的问题,请考虑accepting它。
【解决方案2】:

不要在每次检查时更新标志。

def linearsearch(arraydata,num):
    flag = False
    for i in range(0,len(arraydata)):
        if num == arraydata[i]:
            flag = True
    return flag
arraydata = [10,5,6,7,1,12,13,15,21,8]
num = int(input("please input the number you want to find: "))
returnvalue = linearsearch(arraydata,num)
if returnvalue == True:
    print("number has been found")
else:
    print("number has not been found")

【讨论】:

    猜你喜欢
    • 2016-12-25
    • 2022-01-16
    • 1970-01-01
    • 2022-01-02
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    相关资源
    最近更新 更多