首页 > 解决方案 > 所以我做了一个线性搜索代码,但是当我在数组中输入一个数字时,它仍然会打印(数字没有)为什么会这样?

问题描述

嗨所以我必须做线性搜索程序,我在这里做了

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

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

标签: pythonlinear-search

解决方案


如果最后一项等于该值,则您的方法仅返回 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

推荐阅读