
Python
文章平均质量分 72
littlethunder
Python shake the world
展开
-
python3.3.1 pythonchallenge 通关之level 1
才发现这个好玩的python解题通关网站,http://www.pythonchallenge.com/ 今天玩一晚上先~哈哈 现在开始搞起。网上应该还有别人的解法,我不参考只用自己的方法,供大家博采众长,玩python就是为了开心~哈哈 第0题没用Python,从第1题开始: k->m,o->q,e->g,意思每个字母加2得原创 2013-05-16 19:39:46 · 4331 阅读 · 0 评论 -
python3自动下载优酷视频小程序
我们一般都在优酷里看一些好玩的视频,有时候看到精彩的就想下载到本地保存起来留作纪念,在win下可以用维棠等软件下载,但苦了用linux的孩子们。尽管chrome和firefox的一些插件可以下载,但有时候下载下来是分段的视频,还要手动用ffmpeg合成一个视频太繁琐,而且用插件下载要点击好多次鼠标,太不符合linuxer的性格了哈~于是我用python3写了一个youkuDown.py,代码如下:原创 2014-01-13 20:30:01 · 21976 阅读 · 9 评论 -
青蛙跳小游戏之python3解法
青蛙跳小游戏是一个看似简单的智力游戏,游戏任务是让左右两边的青蛙互换位置。鼠标点击青蛙,它会跳到离它最近的一块空置的石头上。下图是游戏界面: 我在4399上也找到了这个小游戏,链接http://www.4399.com/flash/7584.htm 。 这个小游戏我尝试了好多次,太笨了,只能用代码搞起,就是深度搜索,找到一个解就OK。代码如下:pos原创 2014-03-05 09:35:37 · 8035 阅读 · 3 评论 -
SQLite3基本使用从shell到python
SQLite是一个轻量级的关系型数据库,在访问量不超过10万PV的中小网站中使用绰绰有余。而且使用方便,接口简单,下面从命令行和python接口两方面介绍SQLite3的基本操作。 在linux终端中,通过 sqlite3 a.db 打开a.db数据库,如果不存在会自动创建,创建一个表格:create table users(id integer primary key,na原创 2014-04-29 10:45:04 · 6824 阅读 · 0 评论 -
【Python排序搜索基本算法】之二叉树的深度和宽度
接着上一个二叉树的主题,用python写一下求二叉树深度和宽度的代码,求深度用递归;求宽度用队列,然后把每层的宽度求出来,找出最大的就是二叉树的宽度,如下:import queueclass Node: def __init__(self,value=None,left=None,right=None): self.value=value self.left=le原创 2014-04-15 09:41:53 · 12064 阅读 · 2 评论 -
【Python排序搜索基本算法】之拓扑排序
拓扑排序是对有向无环图的一种排序,满足如下两个条件:1.每个顶点出现且只出现一次;2.若A在序列中排在B的前面,则在图中不存在从B到A的路径。如上的无环有向图,v表示顶点:v=['a','b','c','d','e'],e表示有向边:e=[('a','b'),('a','d'),('b','c'),('d','c'),('d','e'),('e','c')],代码如下:原创 2014-04-19 15:35:32 · 11308 阅读 · 2 评论 -
大整数乘法python3实现
由于python具有无限精度的int类型,所以用python实现大整数乘法是没意义的,但是思想是一样的。利用的规律是:第一个数的第i位和第二个数大第j位相乘,一定累加到结果的第i+j位上,这里是从0位置开始算的。代码如下:import sysdef list2str(li): while li[0]==0: del li[0] res='' for i in li: res+原创 2014-05-07 15:13:30 · 14980 阅读 · 0 评论 -
【Python排序搜索基本算法】之堆排序
堆是一种完全二叉树,堆排序是一种树形选择排序,利用了大顶堆堆顶元素最大的特点,不断取出最大元素,并调整使剩下的元素还是大顶堆,依次取出最大元素就是排好序的列表。举例如下,把序列[26,5,77,1,61,11,59,15,48,19]排序,如下:原创 2014-04-16 21:47:36 · 11178 阅读 · 0 评论 -
棋盘覆盖问题python3实现
在2^k*2^k个方格组成的棋盘中,有一个方格被占用,用下图的4种L型骨牌覆盖所有棋盘上的其余所有方格,不能重叠。 代码如下:def chess(tr,tc,pr,pc,size): global mark global table mark+=1 count=mark if size==1: return half=size//2 if pr<t原创 2014-05-08 11:24:53 · 13934 阅读 · 6 评论 -
最长公共子序列python实现
最长公共子序列是动态规划基本题目,下面按照动态规划基本步骤解出来。1.找出最优解的性质,并刻划其结构特征序列a共有m个元素,序列b共有n个元素,如果a[m-1]==b[n-1],那么a[:m]和b[:n]的最长公共子序列长度就是a[:m-1]和b[:n-1]的最长公共子序列长度+1;如果a[m-1]!=b[n-1],那么a[:m]和b[:n]的最长公共子序列长度就是MAX(a[:m-1]和原创 2014-05-12 17:05:26 · 27370 阅读 · 2 评论 -
python3自动爬笑话
学校的服务器可以上外网了,所以打算写一个自动爬取笑话并发到bbs的东西,从网上搜了一个笑话网站,感觉大部分还不太冷,html结构如下: 可以看到,笑话的链接列表都在里面,用正则表达式可以把最近的几个笑话地址找出来,再进到一个笑话页面看下: 每一个笑话页面里面是有多个小笑话组成的,全部在标签下,每个小笑话又单独一个包裹,这样非常容易原创 2014-05-13 11:04:46 · 7738 阅读 · 3 评论 -
活动安排问题python实现
活动安排问题要求高效地安排一系列争用某一公共资源的活动,贪心算法提供了一个简单的方法,使尽可能多的活动能兼容地使用公共资源。贪心算法并不总能求得问题的整体最优解,但对于活动安排问题,贪心算法却能做到,使得最终所确定的相容活动集合的规模最大,证明不在这里给出。代码如下:def greedyManage(meeting): length=len(meeting) meeting.sort(ke原创 2014-05-21 10:24:40 · 6587 阅读 · 1 评论 -
01背包问题(回溯法)python实现
接上一篇,同样的01背包问题,上一篇采用动态规划的方法,现在用回溯法解决。回溯法采用深度优先策略搜索问题的解,不多说,代码如下:bestV=0curW=0curV=0bestx=Nonedef backtrack(i): global bestV,curW,curV,x,bestx if i>=n: if bestV<curV: bestV=curV bestx=原创 2014-05-22 21:00:14 · 15067 阅读 · 2 评论 -
01背包问题(动态规划)python实现
在01背包问题中,在选择是否要把一个物品加到背包中,必须把该物品加进去的子问题的解与不取该物品的子问题的解进行比较,这种方式形成的问题导致了许多重叠子问题,使用动态规划来解决。n=5是物品的数量,c=10是书包能承受的重量,w=[2,2,6,5,4]是每个物品的重量,v=[6,3,5,4,6]是每个物品的价值,先把递归的定义写出来: 然后自底向上实现,代码如下:def原创 2014-05-22 12:13:27 · 41611 阅读 · 10 评论 -
python3使用smtplib发送邮件
smtplib模块是smtp简单邮件传输协议客户端的实现,为了通用性,有时候发送邮件的时候要带附件或图片,用email.mime来装载内容。代码如下:import smtplibimport email.mime.multipartimport email.mime.textmsg=email.mime.multipart.MIMEMultipart()msg['from']='us原创 2014-06-08 11:00:43 · 26441 阅读 · 0 评论 -
约瑟夫环问题python解法
约瑟夫环问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到k的那个人被杀掉;他的下一个人又从1开始报数,数到k的那个人又被杀掉;依此规律重复下去,直到圆桌周围的人只剩最后一个。 思路是:当k是1的时候,存活的是最后一个人,当k>=2的时候,构造一个n个元素的循环链表,然后依次杀掉第k个人,留下的最后一个是可以存活的人。代码如下:原创 2014-09-10 16:28:37 · 28454 阅读 · 4 评论 -
python3下multiprocessing、threading和gevent性能对比----暨进程池、线程池和协程池性能对比
目前计算机程序一般会遇到两类I/O:硬盘I/O和网络I/O。我就针对网络I/O的场景分析下python3下进程、线程、协程效率的对比。进程采用multiprocessing.Pool进程池,线程是自己封装的进程池,协程采用gevent的库。用python3自带的urlllib.request和开源的requests做对比。代码如下:import urllib.requestimport re原创 2014-11-10 17:28:43 · 39091 阅读 · 7 评论 -
python的函数式编程玩法+年末小感
从小老师教编程语言就告诉分两种:面向过程和面向对象,正如同小学电脑课面对的是win95,仿佛世界上windows就是操作系统的别名,如今还是这样,高校的计算机中心都是windows,所以linux是要自己搞起,函数式编程也是要自己搞起的~不为学分不为奖学金不为工资只是追随着自己的兴趣,这才是最开心的哈~ python有一大优点,就是既可以面向对象也可以面向过程还可以函数式搞起,因原创 2013-12-29 18:42:35 · 11640 阅读 · 0 评论 -
把学校直播的电视节目保存到本地
有时候想看电视节目,但播放的时候自己可能在开会在吃饭在厕上等等,经常错过好多电视节目。每个学校都有电视转播的网站,从那里定时下载,到时候观看就啥都不耽误了,关键还能快进哈~开始搞起~ 学校的电视直播地址是http://video.ustc.edu.cn/tv.php,比如用vlc看凤凰卫视:cvlc rtsp://202.38.64.43/tv7 打开wir原创 2013-10-20 15:56:22 · 6316 阅读 · 5 评论 -
python3.3.1 pythonchallenge 通关之level 3
紧接着level2,进入level3。突然发现这样挺好玩的,一边解谜一边直播blog,带感啊~上图: 根据level2的经验,直接看html代码,发现果然还是这样:还是tornado搞起:import tornado.httpclientdef small(a): if a>='a' and a<='z': return Tru原创 2013-05-16 20:39:41 · 3212 阅读 · 0 评论 -
python3.3.1 pythonchallenge 通关之level 4
level3还意犹未尽,接着来到了level4,还是直播ing。。。上图:都是一个套路,进html源码: 哈哈,这就明白了,TA是让用urllib来不断get方式传送nothing的值,但是,我偏不用。我还用tornado:import tornado.httpclientlink='http://www.pythonchallenge.co原创 2013-05-16 21:21:47 · 3455 阅读 · 0 评论 -
python3.3.1 pythonchallenge 通关之level 2
紧接着level1 进入了level2,如下:既然说了那我就看看html源码,果然有线索:好了,python3.3搞起,但是!!!如果把这么大坨的符号复制过来,太不pythonic了,既然最近在看tornado(可看我上几篇blog),那就用用:import tornado.httpclientcli=tornado.httpclient.HTTPClie原创 2013-05-16 20:02:17 · 3670 阅读 · 0 评论 -
python3 终端下英汉词典 BeautifulSoup+网络爬虫
看英文文档经常要查不懂的单词,在win下有划词功能的软件,在linux下木有T_T。因为在linux下开启终端非常方便,于是想写一个在终端下查词的小程序,我的查单词只需两步:1.ctrl+alt+T 打开终端;2. ./thunderdic.py 输入单词显示中文意思。如下图所示: 哈哈,我感觉还是非常好用+好玩的~代码如下,主要是BeautifulS原创 2013-05-18 13:43:44 · 5170 阅读 · 3 评论 -
求指定区间的质数-python版 【Sphere OJ】
很多大家常用的OJ平台都只提供C,C++,Java等常用语言,但还是有很多OJ提供其他语言支持,Sphere OJ 应该算里面最出名的之一。Sphere里面第二题求质数的问题,我觉得非常有意思,因为我提交了好几个版本都是“time limit exceeded ”,于是我想把代码放出来,供感兴趣的人一起讨论讨论,抛砖引玉~~ 题目链接http://www.spoj.com/pro原创 2013-07-10 09:58:44 · 4816 阅读 · 2 评论 -
python多线程+队列下载资源
网上有一些公开课视频教程还有课件啥的,手动下太慢了,写个python下载。我想尽可能的做到通用性,以后可以直接用的,代码如下,抛砖引玉,欢迎建议和意见:import urllib.requestimport reimport queueimport threadingimport osclass download(threading.Thread): def __init__(se原创 2013-07-21 09:52:36 · 14637 阅读 · 3 评论 -
【Python排序搜索基本算法】之选择排序
选择排序就是第n次把序列中最小的元素排在第n的位置上,一旦排好就是该元素的绝对位置。代码如下:def selectionSort(seq): length=len(seq) for i in range(length): mini=min(seq[i:]) if seq[i]>mini: j=seq.index(mini,i) seq[i],seq[j]=seq[j],原创 2013-07-21 19:39:01 · 3047 阅读 · 0 评论 -
【Python排序搜索基本算法】之冒泡排序
冒泡排序和选择排序类似,也是第n次把最小的元素排在第n的位置上,也是该元素的绝对位置,只是冒泡排序的过程中,其他的元素也逐渐向自己最终位置逼近。代码如下:def bubbleSort(seq): length=len(seq) for i in range(length): for j in range(length-1,i,-1): if seq[j-1]>seq[j]:原创 2013-07-21 19:42:42 · 2347 阅读 · 0 评论 -
【Python排序搜索基本算法】之插入排序
插入排序生活中非常常见,打扑克的时候人的本能就在用插入排序:把抽到的一张插入到手上牌的正确位置上。有两种插入排序方法,一种基于比较,另一种基于交换。代码如下:1.基于比较的插入排序:def insertionSort(seq): length=len(seq) for i in range(1,length): tmp=seq[i] for j in range(i,0,-1)原创 2013-07-21 19:34:57 · 3039 阅读 · 0 评论 -
【Python排序搜索基本算法】之希尔排序
希尔排序是插入排序的扩展,通过允许非相邻的元素进行交换来提高执行效率。希尔排序最关键的是选择步长,本程序选用Knuth在1969年提出的步长序列:1 4 13 40 121 364 1093 3280 。。。后一个元素是前一个元素*3+1,非常方便选取,而且效率还不错。代码如下:def shellSort(seq): length=len(seq) inc=0 while inc<=le原创 2013-07-25 18:33:19 · 5773 阅读 · 1 评论 -
【Python排序搜索基本算法】之归并排序
归并排序最令人兴奋的特点是:不论输入是什么样的,它对N个元素的序列排序所用时间与NlogN成正比。代码如下:def mergesort(seq): if len(seq)<=1: return seq mid=int(len(seq)/2) left=mergesort(seq[:mid]) right=mergesort(seq[mid:]) return merge(left原创 2013-07-25 18:37:58 · 16328 阅读 · 1 评论 -
【Python排序搜索基本算法】之二叉树的遍历
先给出二叉树节点的python表示:class Node: def __init__(self,value=None,left=None,right=None): self.value=value self.left=left self.right=right 再给出二叉树前序,中序,后序遍历:def preTraverse(root): if root原创 2013-08-01 21:20:48 · 13363 阅读 · 0 评论 -
【Python排序搜索基本算法】之Prim算法
Prim算法是实现最简单的最小生成树(MST)算法,适合于稠密图。要实现Prim算法,我们主要关注的是增量的变化,也就是从每个非树顶点到树顶点的最短距离,使得最后生成一棵包括所有顶点的树,并且这棵树的边权值之和最小。下面用一个例子说明:代码如下:_=float('inf')def prim(graph,n): dis=[0]*n pre=[0]*n flag=[False原创 2013-08-04 17:35:15 · 6735 阅读 · 1 评论 -
【Python排序搜索基本算法】之Dijkstra算法
Dijkstra算法和前一篇的Prim算法非常像,区别就在于Dijkstra算法向最短路径树(SPT)中添加顶点的时候,是按照ta与源点的距离顺序进行的。OSPF动态路由协议就是用的Dijkstra算法。下面还以那个图的例子为例:代码如下:_=float('inf')def dijkstra(graph,n): dis=[0]*n flag=[False]*n pre=[原创 2013-08-04 17:50:14 · 25037 阅读 · 18 评论 -
python解数独--世界最难数独2.3秒完成
“芬兰数学家因卡拉,花费3个月时间设计出了世界上迄今难度最大的数独游戏,而且它只有一个答案。因卡拉说只有思考能力最快、头脑最聪明的人才能破解这个游戏。”这是英国《每日邮报》2012年6月30日的一篇报道。看完这个新闻就对数独有点感兴趣了,于是用python解一下玩玩,无意中却戳穿了某个虚假新闻(下面有链接)。 上图就是那个最难数独。解数独用的就是深度优先搜索,有几个方面可原创 2013-08-04 20:37:09 · 65484 阅读 · 29 评论 -
【Python排序搜索基本算法】之快速排序
快速排序应用范围最为广泛,C语言标准库里的qsort应用的就是快速排序的方法。首先要选择一个划分元素,我在程序中选择seq[0],就是第一个元素;然后在seq[1:] 即从第二个元素到最后一个元素之间,选择比这个划分元素小的放到前面,选择比这个划分元素大的放到后面;这样采用分治法不断缩小范围,自顶向下进行。代码如下:def qsort(seq): if seq==[]: return [原创 2013-07-25 18:52:33 · 3849 阅读 · 1 评论 -
知道创宇爬虫题--代码持续更新中
网上流传着知道创宇的一道爬虫题,虽然一直写着一些实用的爬虫,但真正写出这个一个规范要求的“工具”,还是学到了不少东西。先看下题目:使用python编写一个网站爬虫程序,支持参数如下:spider.py -u url -d deep -f logfile -l loglevel(1-5) --testself -thread number --dbfile filepath --key原创 2014-11-06 15:53:09 · 9320 阅读 · 1 评论