谁会用python写个python 二分法算法查找的循环

Python 实现的关键词查找小工具
来源:博客园
原文链接: 引言平时工作时,有时会遇到这样的情景:在一个目录及其子目录下所有的文本文件中查找某个关键字、词或者完整的句子。当然,如果是在Linux平台上,find+egrep就能实现这样的功能。不过最近学习了Python tkinter相关的知识,自然是想做出一款带有界面的小工具,可以跨平台使用。所以,本文介绍的小工具,主要就是为了巩固学习到的Python tkinter知识,同时也是为了方便自己。涉及的 Python 及 tkinter 的知识os.walk函数:负责遍历目录下所有的文件;mimetypes.guess_type函数:负责给出文件的类型,从而过滤出非文本文件;Listbox组件的使用及鼠标双击事件的绑定;pack布局;生产者+消费者 线程模型,主线程(GUI)负责消费来自后台线程搜索得到的文件路径结果,并及时显示出来;Ubuntu平台下,使用os.system('nautilus file_path)'定位到指定的文件。功能在指定目录及其子目录下所有的文本文件中查找关键字、词和句子;在Ubuntu上支持双击列表项目,自动使用nautilus文件管理器定位到指定位置。关键代码完整的小工具源码参见,以下是搜索部分的代码,比较简单。def _find(self, path, keyword):
if not os.path.exists(path):
return None
for this_dir, sub_dirs, files in os.walk(path):
for file in files:
file_type = guess_type(file)[0]
if file_type and 'text' in file_type:
fp = os.path.join(this_dir, file)
self._result_queue.put(fp) if keyword in open(fp).read() else None运行截图参考
免责声明:本站部分内容、图片、文字、视频等来自于互联网,仅供大家学习与交流。相关内容如涉嫌侵犯您的知识产权或其他合法权益,请向本站发送有效通知,我们会及时处理。反馈邮箱&&&&。
学生服务号
在线咨询,奖学金返现,名师点评,等你来互动2013年3月 C/C++大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。Python 二分法查找
编辑:www.fx114.net
本篇文章主要介绍了"Python 二分法查找",主要涉及到Python 二分法查找方面的内容,对于Python 二分法查找感兴趣的同学可以参考一下。
1.如果找到该值就返回
2.如果找不到该值就返回该值的上一个Index和下一个Index
3.小于List[0] 返回0
4.大于len(List)返回该List[-1]
def BinarySearch(keyTime,List):
high = len(List) - 1
middle = 0
while(low &= high):
middle = int((low + high) / 2)
#获取中间数据
listTime = List[middle][0]
if listTime == keyTime:
return listTime
elif listTime & keyTime:
low = middle + 1
elif listTime & keyTime:
high = middle - 1
if high & 0:
print '不在List范围内'
elif low & len(List) - 1:
print '超出List范围'
return len(List)
return (high,low)
版权声明:本文为博主原创文章,未经博主允许不得转载。
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:Python 3 教程
Python3 循环语句
本章节将为大家介绍Python循环语句的使用。
Python中的循环语句有 for 和 while。
Python循环语句的控制结构图如下所示:
while 循环
Python中while语句的一般形式:
while 判断条件:
同样需要注意冒号和缩进。另外,在Python中没有do..while循环。
以下实例使用了 while 来计算 1 到 100 的总和:
counter = 1
while counter &= n:
sum = sum + counter
counter += 1
print(&1 到 %d 之和为: %d& % (n,sum))
执行结果如下:
1 到 100 之和为: 5050
我们可以通过设置条件表达式永远不为 false 来实现无限循环,实例如下:
while var == 1 :
num = int(input(&输入一个数字 :&))
print (&你输入的数字是: &, num)
print (&Good bye!&)
执行以上脚本,输出结果如下:
输入一个数字
你输入的数字是:
输入一个数字
你可以使用
CTRL+C 来退出当前的无限循环。
无限循环在服务器上客户端的实时请求非常有用。
while 循环使用 else 语句
在 while … else 在条件语句为 false 时执行 else 的语句块:
while count & 5:
print (count, & 小于 5&)
count = count + 1
print (count, & 大于或等于 5&)
执行以上脚本,输出结果如下:
大于或等于 5
简单语句组
类似if语句的语法,如果你的while循环体中只有一条语句,你可以将该语句与while写在同一行中, 如下所示:
while (flag): print ('欢迎访问菜鸟教程!')
print (&Good bye!&)
注意:以上的无限循环你可以使用 CTRL+C 来中断循环。
执行以上脚本,输出结果如下:
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
for循环的一般格式如下:
for &variable& in &sequence&:
&statements&
&statements&
Python loop循环实例:
&&&languages = [&C&, &C++&, &Perl&, &Python&]
&&& for x in languages:
... print (x)
以下 for 实例中使用了 break 语句,break 语句用于跳出当前循环体:
sites = [&Baidu&, &Google&,&Runoob&,&Taobao&]
for site in sites:
if site == &Runoob&:
print(&菜鸟教程!&)
print(&循环数据 & + site)
print(&没有循环数据!&)
print(&完成循环!&)
执行脚本后,在循环到 "Runoob"时会跳出循环体:
循环数据 Baidu
循环数据 Google
range()函数
如果你需要遍历数字序列,可以使用内置range()函数。它会生成数列,例如:
&&&for i in range(5):
... print(i)
你也可以使用range指定区间的值:
&&&for i in range(5,9) :
也可以使range以指定数字开始并指定不同的增量(甚至可以是负数,有时这也叫做'步长'):
&&&for i in range(0, 10, 3) :
&&&for i in range(-10, -100, -30) :
您可以结合range()和len()函数以遍历一个序列的索引,如下所示:
&&&a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']
&&& for i in range(len(a)):
... print(i, a[i])
还可以使用range()函数来创建一个列表:
&&&list(range(5))
[0, 1, 2, 3, 4]
break和continue语句及循环中的else子句
break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。
实例如下:
for letter in 'Runoob':
if letter == 'b':
print ('当前字母为 :', letter)
while var & 0:
print ('当期变量值为 :', var)
var = var -1
if var == 5:
print (&Good bye!&)
执行以上脚本输出结果为:
当前字母为 : R
当前字母为 : u
当前字母为 : n
当前字母为 : o
当前字母为 : o
当期变量值为 : 10
当期变量值为 : 9
当期变量值为 : 8
当期变量值为 : 7
当期变量值为 : 6
continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
for letter in 'Runoob':
if letter == 'o':
print ('当前字母 :', letter)
while var & 0:
var = var -1
if var == 5:
print ('当前变量值 :', var)
print (&Good bye!&)
执行以上脚本输出结果为:
当前字母 : R
当前字母 : u
当前字母 : n
当前字母 : b
当前变量值 : 9
当前变量值 : 8
当前变量值 : 7
当前变量值 : 6
当前变量值 : 4
当前变量值 : 3
当前变量值 : 2
当前变量值 : 1
当前变量值 : 0
循环语句可以有 else 子句,它在穷尽列表(以for循环)或条件变为 false (以while循环)导致循环终止时被执行,但循环被break终止时不执行。
如下实例用于查询质数的循环例子:
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print(n, '等于', x, '*', n//x)
print(n, ' 是质数')
执行以上脚本输出结果为:
4 等于 2 * 2
6 等于 2 * 3
8 等于 2 * 4
9 等于 3 * 3
Python pass是空语句,是为了保持程序结构的完整性。
pass 不做任何事情,一般用做占位语句,如下实例
&&&while True:
&&&class MyEmptyClass:
以下实例在字母为 o 时 执行 pass 语句块:
for letter in 'Runoob':
if letter == 'o':
print ('执行 pass 块')
print ('当前字母 :', letter)
print (&Good bye!&)
执行以上脚本输出结果为:
当前字母 : R
当前字母 : u
当前字母 : n
执行 pass 块
当前字母 : o
执行 pass 块
当前字母 : o
当前字母 : b
11个月前 (02-27)
2.如果 else 语句和 for 循环语句一起使用,else 语句块只在 for 循环正常终止时执行!
&&&Try&&910***4个月前 (09-12)
记住登录状态
重复输入密码使用python实现二分法查找_python_动态网站制作指南
使用python实现二分法查找
来源:人气:878
最近开始学习mit的python课程,其中手工实现的一个关于二分法查找的练习代码个人感觉比较有参考价值,贴上来分享交流一下。
主要功能是在1-100中自己猜测一个数值,随后系统产生数值看是否符合猜测,如果不符合选择高于或者低于猜测数值,系统继续产生随机数,最后成功找到猜测值。
实现方法为采用二分法,每次取中值,如果高了则继续取下半部分的中值,如果低了则取上半部分的中值,以此类推,最后找到正确猜测值。
1 from p.backwardcompat import raw_input
3 int("Please think of a number between 0 and 100!")
5 #设初始值
6 hi = 100
8 guessed = False
9 guess = 0
10 while not guessed:
guess = (int)((hi + lo)/2) #注意此处将结果强转为int型,否则系统值将会是浮点数
print("Is your secret number " + str(guess) + "?")
user_inp = raw_input("Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. ")
#c为猜测正确,h为数值高了,l为低了
if user_inp == 'c':
guessed = True
elif user_inp == 'h':
hi = guess
elif user_inp == 'l':
lo = guess
print("Sorry, I did not understand your input.")
24 print('Game over. Your secret number was: ' + str(guess))
优质网站模板}

我要回帖

更多关于 python 二分法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信