所以我做了一个线性搜索代码,但是当我在数组中输入一个数字时,它仍然会打印(数字没有)为啥会这样?

Posted

技术标签:

【中文标题】所以我做了一个线性搜索代码,但是当我在数组中输入一个数字时,它仍然会打印(数字没有)为啥会这样?【英文标题】: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")

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

【问题讨论】:

这不是二分搜索。 是的,对不起,我改变了它:) 【参考方案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")

【讨论】:

以上是关于所以我做了一个线性搜索代码,但是当我在数组中输入一个数字时,它仍然会打印(数字没有)为啥会这样?的主要内容,如果未能解决你的问题,请参考以下文章

线性和二进制搜索逻辑错误

使用线性搜索为二维数组生成唯一数字

CSS悬停不起作用

C 二进制和线性搜索

线性搜索期间二维数组中的数组索引越界错误[关闭]

使用关系值搜索数据表