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