摘要:什么是闭包?简单说,闭包就是根据不同的配置信息得到不同的结果再来看看专业的解释:闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,有另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实体。python实例看概念总是让人摸不着头脑,看几个python小例子就会了例1def make_adder(addend): def adder(augend): return augend + addend return adderp = make...
阅读全文
摘要:生成器有主要有四种方法:next()执行函数,直到遇到下一个yield为止,并返回值send(value)为生成器发送一个数值,next()方法就相当于send(None)close()终止生成器throw(exc[exc_value,[exc_tb]])在生成器yield处引发一个异常,close()相当于引发一个GeneratorExit异常输出型一个斐波那契数列的例子def fibonacci(): a, b = 0, 1 while True: yield b a, b = b, a+ba = fibonacci()for i in ra...
阅读全文
摘要:原来不怎么喜欢调试,写的程序大了,感觉调试也是很有必要的,简单总结一下几种常用的调试方式1.print输出 不要小看print输出,有时候,或许这是最快的方式。通过print将某个变量的值输出,再和预期的值进行比较,有问题的话再去分析源码看看哪里有错误。2.logging模块 这个模块比较强大,也很有用,完全可以替代print。logging模块可以定义日志级别,包括NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL这几个级别,通过设置可以输出某个级别以上的日志,可以选择将日志保存到文件或者在屏幕输出。具体用法可以
阅读全文
摘要:考完试了,开始研究《python高级编程》用过zsh的同学肯定对其自动补全功能印象深刻,通过简单的定制python交互式命令行也能实现类似功能,具体操作如下:在用户目录下新建".pythonstartup"文件,写入以下内容:# python startup fileimport readlineimport rlcompleterimport atexitimport os#tab completionreadline.parse_and_bind('tab: complete')#history filehistoryfile = os.path.joi
阅读全文
摘要:开发起因谢老师有一个操作系统测评软件,需要安装客户端,不太方便,于是前段时间突发奇想想做一个web版的,主要是熟悉一下如何用python开发网站。web版的有如下优点:不用安装任何客户端软件,打开浏览器就能在线测试数据库放在云端,增加安全性基于web,跨平台更方便地统计所有用户的成绩方便用户获取自己的排名需求分析需要实现的功能:前端: 首页:选择题目难度 测试页面:展示题目,提供输入框,显示剩余时间,时间到自动提交,防止复制,防止粘贴 成绩及答案页面:显示得分,排名,以及错题的正确答案后台: 数据库部分:题目入库,题目检索,获取答案,成绩入库,获取排名 web页面部...
阅读全文
摘要:基本原理 利用有道翻译api,提交要查询的单词,返回json结果,然后对结果进行解析输出代码#!/usr/bin/envpython#coding=utf-8importurllibimportjson#ret='''{"translation":["苹果"],"basic":{"phonetic":"'æpl","explains":["n.苹果;家伙"]},"query":"app
阅读全文
摘要:前些天在gae上部署了一个定时往手机发送天气预报的小python程序,原理很简单,就是抓取天气网站,然后解析页面得到天气信息,再利用gae的邮件功能往自己的139邮箱发送电子邮件,手机就能免费接收天气预报了。 后来发现gae上有邮件发送次数限制,一个月只能发送100封电子邮件,假如给我爸,妈和我一天发一封的话,一个月就90多条了,我测试已经费了几条了,如果还想给其他亲朋好友发送天气预报,或者自己接收一些其他电子邮件信息的话,怎么够用?问题就这样来了。。。 本来想在gae上直接调用python的smtplib 模块发送邮件,发现不能用。囧rz.... 于是乎,苦寻各种解决方案-...
阅读全文
摘要:页面是这样的:http://poj.org/problem?id=3334 要从这样的页面里面提取题目标题,时间限制,内存限制,题目描述,输入,输出,示例输入,示例输出,提示,来源等信息,获取必要的题目中的图片。#!/usr/bin/envpython#coding=utf-8fromBeautifulSoupimportBeautifulSoupimporturllibimportredefgetpojhtml(pid):url="http://poj.org/problem?id="+str(pid)html=urllib.urlopen(url) soup=Beaut
阅读全文
摘要:杭州电子科技大学的OJ(http://acm.hdu.edu.cn/)(以后简称杭电)很有特色,目前也很火,其中一个关键原因就是它提供了一些新功能,比如diy,webdiy,virtual contest等。这里我们简单讨论一下杭电的webdiy。 webdiy是什么?是在DIY的基础上增加了从其他OJ选题的功能,那么DIY是什么?就是自己在本地选题,然后组成一场比赛。实现这个功能关键是能在其他OJ上提交,并能获得评判结果,直接往数据库里面写肯定是不可能的,那就只剩下一个方法:网络爬虫,模拟用户提交。 最近一直在研究python的网络编程模块,用python来实现这个功能还是比较...
阅读全文
摘要:这个模块是最基本最常用的,以前看过,总结一下#coding:utf-8importurlliburl='http://cnblogs.com'#代理服务器proxies={'http':'http://127.0.0.1:8087'}#使用代理服务器打开r=urllib.urlopen(url,proxies=proxies)printr.info()printr.getcode()printr.geturl()#打开本地文件f=urllib.urlopen(url='file:/home/ma6174/a.sh')printf.
阅读全文
摘要:人生苦短,我用python! 局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的。现在有个任务是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软件,拷贝某些文件,批量关机等。如果一台一台得手工去操作,费时又费力,如果要进行多个操作就更麻烦啦。 或许你会想到网络同传, 网络同传是什么?就是在一台电脑上把电脑装好,配置好,然后利用某些软件,如“联想网络同传”把系统原样拷贝过去,在装系统时很有用,只要在一台电脑上装好,同传以后所有的电脑都装好操作系统了,很方便。同传要求所有电脑硬件完全相同,在联想的电脑...
阅读全文
摘要:条形码的应用将会越来越广泛,看到了一篇文章(http://www.systron.com.cn/txm-7.htm),写的挺好的!用手机拍二维码,查二维码确实很爽!这将成为一种潮流!手机上的二维码识别程序已经做的很好了,“我查查”用起来很不错的我搜集了几个二维条码生成网站:http://www.morovia.com/free-online-barcode-generator/qrcode-maker.phphttp://qrencode.sinaapp.com/http://www.mayacode.com/作为一个程序猿,我们也要懂得如何制作二维条形码python的elaphe模块帮我们解
阅读全文
摘要:不要整天往脑袋里塞算法,要适时把算法拿出来,应用到实际开发中! 这两天闲来无事在百度上淘了点图片,不多,也就几万张吧,其中有不少美女图片奥!哈哈!这里暂且不说图片是怎么获得的,咱聊聊得到图片以后发生的事。 遇到的第一个问题就是有些图片没有后缀名。在windows下,没有后缀名的文件是不能正确被识别的,没有预览,打开时还要选择打开方式,费劲!这个问题比较容易解决,给每个图片加上后缀名就是了。没有后缀名的图片也不多,不到1000张吧,一张一张地改很麻烦,还好我是学计算机的,上午写了个程序批量修改http://www.cnblogs.com/ma6174/archive/2012...
阅读全文
摘要:任务很简单,某个目录下面有几千个文件,某些文件没有后缀名,现在的任务就是将所有的没有后缀名的文件加上后缀名,python有现成的函数可以实现,但是在实现过程中遇到几个问题,分享一下解决方法下面是最终代码 (windows下实现的)#-*-coding:cp936-*-importospath='D:\\图片\\'forfileinos.listdir(path):ifos.path.isfile(os.path.join(path,file))==True:iffile.find('.')<0:newname=file+'rsfdjndk.jpg&
阅读全文
摘要:eclipse狠强大!在eclipse下开发python很方便!代码提示功能比较完善!在eclipse下配置python开发环境不算难,简单记录一下.1.help -> Install New Software,点击"add",在name里面输入"PyDev",location里面输入"http://pydev.org/updates"2.在出来的列表里面选择"PyDev",然后狂点下一步就是了,网络好的话很快就能安完3.配置编译器:我window -> perferences,依次找到PyDev -&
阅读全文
摘要:问题描述:有N个独立作业,每个作业处理时间为time[i],有M个相同的机器加工处理,约定每个作业可以在任何一台机器上加工处理,未完工前不允许中断处理,作业不能拆分成更小的子作业。要求在最短时间内完成,求最短时 解决方案最理想的方法是平均分配,每台机器处理的时间相同,最后同时处理完任务。实际情况中不一定能完全分配,我们应尽量缩小各个机器处理时间的差距,用贪 心算法可以比较好的解决:先将作业处理时间降序排列,依次选择时间往机器上安排,每次安排在当前工作量总时间最小的机器上,最后求得时间差距最小 代码实现#!/usr/bin/envpython#-*-coding:utf...
阅读全文
摘要:懒人总是想方设法使自己更懒,特别是学计算机的孩纸。 问题来源很简单,OJ评测程序有点问题,有时候不知到怎么回事就waiting了,一但waiting后面所有提交的代码就都waiting了, OJ就不能正常评测了,这时候就需要去服务器端解决问题。怎么解决评测问题不是本次讨论的重点,这里我们更关心的是如何及时发现问题。我们怎么发现问题呢?一般情况下,我们要打开OJ,找到状态页面,然后看看评判结果有没有waiting的,这样做的话,你就要过一段时间就打开页面一次,查看有没有出问题,麻烦!想过没有,一但OJ开始waiting了,你就收到一个短信,告诉你OJ出问题了,你就可以马上解决,这样多好啊。...
阅读全文
摘要:对python的应用还是不熟练,很多实用的方法没掌握,下面的程序本来是用C写的,为了练习一下python,又用python改写的,很粗糙,有bug,不过能运行出结果,嘿嘿,以后学好了python再来优化吧#-*-coding:cp936-*-Keyword=("begin","end","if","while","var","procedure","else","for","do","int",&
阅读全文