python - 所以我做了一个线性搜索代码,但是当我在数组中输入一个数字时,它仍然会打印(数字没有)为什么会这样?
问题描述
嗨所以我必须做线性搜索程序,我在这里做了
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")
但是每当我输入一个数组时,它仍然说没有找到数字,请任何人的帮助将不胜感激
解决方案
如果最后一项等于该值,则您的方法仅返回 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
推荐阅读
- python - 无法读取在线提供的 pdf 文件的特定页面的内容
- php - 使用 domcrawler (Goutte) 获取抓取图像的大小
- php - 不能一次修改一次而不会出现奇怪的错误
- html - 修改另一个元素的 CSS 悬停效果不起作用
- c++ - 应用于整数类型的 `std::isfinite()` 的编译时优化
- javascript - 当一个参数有多个值时,我们如何使用 DS findAll 进行过滤?
- sql - 如何在有或没有加入的情况下更新视图?
- firemonkey - 只读取文本文件的最后一行(C++ Builder)
- android - 如何在Android中实现循环检查/勾选动画?
- vue.js - Vue.js 和 Bootstrap Modal - 调用 JS