
Python
文章平均质量分 67
AngryBill
不忘初心,方得始终
展开
-
那些年我踩过的坑(持续更新)
今天突然想到可以把开发中遇到过的问题记录下来,以防日后再犯:)Python中新式类和旧式类在多继承的时候,查找要调用的方法(从左到右):新式类是广度优先的查找算法。旧式类的查找方法是深度优先的。JSON 字符串必须使用双引号括起原创 2015-11-10 10:54:30 · 1529 阅读 · 0 评论 -
Python Show-Me-the-Code 第 0013 题 抓取妹子图片 使用scrapy
第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-)参考代码完整代码思路:其实这个可以不用scrapy,就用正则匹配+request应该就可以完成任务了。我想练习下scrapy,于是就用scrapy做这个了。这个只要求爬一个网页上的图片,所以也不用写什么follow规则,算是比较简单的。通过分析链接里的妹子图片 的标签,发现百度贴吧里发的图片是带BDE_原创 2015-05-21 13:13:52 · 3077 阅读 · 0 评论 -
Python Show-Me-the-Code 第 0012 题 替换敏感词
第 0012 题: 敏感词文本文件 filtered_words.txt,里面的内容 和 0011题一样,当用户输入敏感词语,则用 星号 * 替换,例如当用户输入「北京是个好城市」,则变成「**是个好城市」。北京程序员公务员领导牛比牛逼你娘你妈lovesexjiangge思路:跟0011题差不多,也是让用户输入词语,然后查找输入中是否含有敏感词,不同的就是把敏感词替换成星号然后原创 2015-05-21 11:10:38 · 4529 阅读 · 1 评论 -
Python Show-Me-the-Code 第 0011 题 过滤敏感词
第 0011 题: 敏感词文本文件 filtered_words.txt,里面的内容为以下内容,当用户输入敏感词语时,则打印出 Freedom,否则打印出 Human Rights。北京程序员公务员领导牛比牛逼你娘你妈lovesexjiangge思路:让用户输入词语,然后查找输入中是否含有敏感词,如果是则打印出 Freedom,否则打印出 Human Rights即可。为了方便原创 2015-05-20 15:57:12 · 2062 阅读 · 0 评论 -
Python Show-Me-the-Code 第 0008 题 提取HTML正文内容
第 0008 题:一个HTML文件,找出里面的正文。思路:我把这里的正文理解为网页中我主要内容,那么怎么去抓取这个主要内容呢?我一开始的想法是用beautifulsoup来解析网页,但是又想到如果要抽取正文的话这样做还涉及到比较复杂的算法,而且对于不同的网页来说效果可能做不到很好。后来我发现了Python-goose(Github)这个神器,它是基于NLTK和Beautiful Soup的,分别是文原创 2015-05-07 10:28:12 · 2840 阅读 · 0 评论 -
Python Show-Me-the-Code 第 0007 题 统计代码行数(注释,空行,总行数)小程序
第 0007 题:有个目录,里面是你自己写过的程序,统计一下你写过多少行代码。包括空行和注释,但是要分别列出来。思路:获取目录,然后遍历目录下的代码文件,逐个统计每个文件的代码,然后最后汇总输出。0007.统计代码.py#!/usr/bin/env python#coding: utf-8import os, re# 代码所在目录FILE_PATH = '/home/bill/Desktop/原创 2015-05-06 13:51:10 · 2880 阅读 · 0 评论 -
Python Show-Me-the-Code 第 0010 题 生成验证码图片
第 0010 题:使用 Python 生成类似于下图中的字母验证码图片阅读资料思路:先随机生成验证码,然后用Python的PIL库画出这个激活码的图片,具体点就是创建画布,加验证码的字上去,增加噪点进行干扰,再进行模糊处理,接着保存到名字为验证码的图片中。0010.生成验证码图片.py#!/usr/bin/env python#coding: utf-8import Image, Image原创 2015-05-10 20:27:00 · 2361 阅读 · 0 评论 -
Python Show-Me-the-Code 第 0009 题 提取网页中的超链接
第 0009 题:一个HTML文件,找出里面的链接。思路:对于提取网页中的超链接,先把网页内容读取出来,然后用beautifulsoup来解析是比较方便的。但是我发现一个问题,如果直接提取a标签的href,就会包含javascript:xxx和#xxx之类的,所以要对这些进行特殊处理。0009.提取网页中的超链接.py#!/usr/bin/env python#coding: utf-8from原创 2015-05-08 20:01:07 · 2059 阅读 · 0 评论 -
Python Show-Me-the-Code 第 0004 题 统计单词
第 0004 题:任一个英文的纯文本文件,统计其中的单词出现的个数。思路:用正则表达式匹配响应的单词和数字,然后让Counter计算单词的词频,再用most_common方法返回一个按照词频排序的包含该词语和该词语出现的次数的元组的列表。0004.统计单词.py#!/usr/bin/env python#coding: utf-8import refrom collections import原创 2015-04-17 21:57:14 · 1490 阅读 · 0 评论 -
Python Show-Me-the-Code 第 0006 题 最重要的词
第 0006 题:你有一个目录,放了你一个月的日记,都是 txt,为了避免分词的问题,假设内容都是英文,请统计出你认为每篇日记最重要的词。思路:切换到目标目录,然后遍历该目录下的txt文件,用正则表达式匹配响应的单词和数字,然后让Counter计算单词的词频,并认为排除掉stop word后出现最多的词是最重要的词。注:stopword就是类似 a/an/and/are/then 的这原创 2015-04-21 17:13:19 · 2156 阅读 · 0 评论 -
Python Show-Me-the-Code 第 0005 题 批量图片处理
第 0005 题:你有一个目录,装了很多照片,把它们的尺寸变成都不大于 iPhone5 分辨率的大小。思路:遍历给出目录下的图片,把大于iPhone5分辨率的图片都进行缩放。使用Python的PIL库对图片进行处理,IPhone5屏幕分辨率为640 × 1136,将大于该分辨率的图片按照一定比例缩放至适合大小并保存。0005.批量图片处理.py#!/usr/bin/env python#codin原创 2015-04-20 18:44:34 · 1783 阅读 · 0 评论 -
Python Show-Me-the-Code 第 0003 题 Redis操作
第 0003 题:将 0001 题生成的 200 个激活码(或者优惠券)保存到 Redis 非关系型数据库中。跟0002题相似,只不过是把关系型数据库换成了非关系型数据库。 步骤:首先安装Redis和库,用pip安装即可打开radis server然后了解下Redis的操作在代码中引入该库连接数据库,写入数据,保存python连接redis很方便,操作也跟redis-cli差不多。因为原创 2015-04-14 11:16:36 · 1751 阅读 · 0 评论 -
Python Show-Me-the-Code 第 0022 题 批量图片处理2
第 0022 题: iPhone 6、iPhone 6 Plus 早已上市开卖。请查看你写得 第 0005 题的代码是否可以复用。思路:跟第五题一样,遍历给出目录下的图片,把大于iPhone5分辨率的图片都进行缩放。使用Python的PIL库对图片进行处理,IPhone5屏幕分辨率为640 × 1136,将大于该分辨率的图片按照一定比例缩放至适合大小并保存。由于第五题已经写过相关函数,就改动一下变成原创 2015-06-18 00:36:55 · 1459 阅读 · 0 评论 -
Python Show-Me-the-Code 第 0023 题 Web留言簿应用
第 0023 题: 使用 Python 的 Web 框架,做一个 Web 版本 留言簿 应用。阅读资料:Python 有哪些 Web 框架思路:Flask是一个使用 Python 编写的轻量级 Web 应用框架。 这个应用后台使用Flask,数据库用mongodb。之前用Tornado写过类似的,所以尝试下使用Flask。前端编写一下样式和模板,从后端返回数据渲染就可以了。留言的话提交给后端然后使原创 2015-06-20 16:27:18 · 2351 阅读 · 0 评论 -
平台后端开发(Python)面试记录
今天去面试了平台后端开发(Python),也拿到了offer,大致记录下面试内容,自我介绍后问了以下问题:手写Python生成器,这个算比较简单的,直接写个带yield的函数就可以了。手写链表翻转,这个我之前有写过几次,但是面试时心太乱了,写了几次才写出来。Tornado框架中的异步实现原理select,poll,epoll epoll改进了select/poll的什么地方线程与进程的区别原创 2016-02-24 20:28:37 · 3206 阅读 · 0 评论 -
饿了么黑客马拉松参赛杂谈
饿了么黑客马拉松参赛杂谈在上个月参加了饿了么黑客马拉松,虽然没有拿到奖有点遗憾,但是感觉学到了很多技术,很值得,遂记录下来。原创 2015-12-04 02:33:04 · 2213 阅读 · 0 评论 -
Python异常(try...except)对代码运行性能的影响
本文主要测试并探讨Python中的异常处理会对代码运行性能造成的影响。原创 2015-11-01 01:28:36 · 23899 阅读 · 0 评论 -
Tickeys - Liunx 给键盘配上音效的软件
简介 Tickeys是一款很强大的键盘音效软件。Tickeys 自带了四种声音效果方案,有打字机、冒泡、机械键盘、剑气等。每天都听着键盘声音是不是很烦闷,现在有了这款神器你就可以瞬间帮助自己的键盘加上逼格特效。这个软件之前发布了Windows和Mac版,Tickeys 是由 Nozama 所做的一个 Mac 平台的开源小项目 (GitHub),Windows 版由黄飞实现。我使用了下,觉得挺有意思原创 2015-08-02 10:56:36 · 4200 阅读 · 0 评论 -
linux(ubuntu)下编译安装cx_Freeze失败解决方法
今天准备把写好的程序打包,结果折腾了一天。先是用pyinstaller,发现打包出来运行不了,应该是在处理import出问题。于是考虑用cx freeze代替,结果在安装的时候就报错,后来找到了解决办法。先是从http://sourceforge.net/projects/cx-freeze/files/上下载cx_Freeze(版本4.3.3)的包 解压,执行:sudo python setup原创 2015-07-23 02:03:11 · 4186 阅读 · 0 评论 -
使用Python获取/dev/input目录下event对应的设备
关于Linux的Input子系统详解请看这篇文章。思路:在某些情况下,我们想知道,event分别对应的是什么设备。虽然我们可以终端中通过命令获取详细信息,我们可以使用Python进行相关处理后获取event所对应的设备的信息。而系统所有输入设备都会出现在/sys/class/input之下,不论它们是以何种总线连接到系统的。/sys/class/input下存放着event对应的链接: 而对应链接原创 2015-07-21 11:32:13 · 4640 阅读 · 0 评论 -
Linux下使用Python捕获键盘输入
在Linux下如何用Python监控键盘记录思路在上篇已经说到如何使用Python获取/dev/input目录下event对应的设备的名字。那么我们可以知道设备的名字,就可以通过名字知道哪些event对应的是键盘(可能不只一个键盘)。然后在/dev/input/下的对应的event就是负责处理键盘输入的数据的event。evdev 输入事件驱动,为输入子系统提供了一个默认的事件处理方法。其接收来自底原创 2015-07-26 12:29:10 · 17341 阅读 · 1 评论 -
Python Show-Me-the-Code 第 0017,0018,0019 题 写XML文件
第 0017 题: 将 第 0014 题中的 student.xls 文件中的内容写到 student.xml 文件中,如下所示:<?xml version="1.0" encoding="UTF-8"?><root><students><!-- 学生信息表 "id" : [名字, 数学, 语文, 英文]-->{ "1" : ["张三", 150, 120, 100原创 2015-05-25 20:42:17 · 2307 阅读 · 0 评论 -
Python Show-Me-the-Code 第 0014,0015,0016 题 写Excel文件
第 0014 题: 纯文本文件 student.txt为学生信息, 里面的内容(包括花括号)如下所示:{ "1":["张三",150,120,100], "2":["李四",90,99,95], "3":["王五",60,66,68]}请将上述内容写到 student.xls 文件中,如下图所示:阅读资料 腾讯游戏开发 XML 和 Excel 内容相互转换第 0015原创 2015-05-22 19:53:03 · 2499 阅读 · 1 评论 -
Python Show-Me-the-Code 第 0021题 密码加密
第 0021 题: 通常,登陆某个网站或者 APP,需要使用用户名和密码。密码是如何加密后存储起来的呢?请使用 Python 对密码加密。阅读资料 用户密码的存储与 Python 示例阅读资料 Hashing Strings with Python阅读资料 Python’s safest method to store and retrieve passwords from a databas原创 2015-06-02 00:08:06 · 2035 阅读 · 0 评论 -
Python Show-Me-the-Code 第 0020题 统计通话时长
第 0020 题: 登陆中国联通网上营业厅 后选择「自助服务」 –> 「详单查询」,然后选择你要查询的时间段,点击「查询」按钮,查询结果页面的最下方,点击「导出」,就会生成类似于 2014年10月01日~2014年10月31日通话详单.xls 文件。写代码,对每月通话时间做个统计。思路:我的手机号是移动的,所以我选的是导出移动手机号某月的详单。打开表格文件发现每行的格式是:序号 通话地 通话类型原创 2015-06-01 10:20:01 · 2251 阅读 · 0 评论 -
Python Show-Me-the-Code 第 0002 题 MySQL操作
第 0002 题:将 0001 题生成的 200 个激活码(或者优惠券)保存到 MySQL 关系型数据库中。步骤:首先安装MySQLdb,用pip安装即可然后了解下MySQLdb的操作在代码中引入该库连接数据库,写入数据,关闭连接0002.MySQL操作.py#!/usr/bin/env python#coding: utf-8import MySQLdbimport gennera原创 2015-04-14 10:28:38 · 1462 阅读 · 0 评论 -
Python Show-Me-the-Code 第 0001 题 生成激活码
第 0001 题:做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)?不知道用什么方法生成激活码比较靠谱,所以就用字母和数字的随机组合了。如果有更好的方法请告诉我:)生成的大概是这样子的: 0001.生成激活码.py#!/usr/bin/env python#coding: utf-8原创 2015-04-13 00:41:39 · 4682 阅读 · 1 评论 -
checkio -- Find Sequence
Find Sequencedef checkio(matrix): if len(matrix) return False for i in range(len(matrix)-3): for j in range(len(matrix)-3): if (matrix[i][j] == matrix[i]原创 2014-06-11 19:16:57 · 1815 阅读 · 0 评论 -
checkio -- Three Points Circle
import mathdef checkio(s): s=s.replace("("," ") s=s.replace(","," ") s=s.replace(")"," ") l=s.split(' ') n=[] for i in l: if len(i) != 0: n.append原创 2014-06-11 19:14:13 · 1352 阅读 · 0 评论 -
Python checkio Transposed Matrix map与zip的使用
题目要求输入矩阵输出矩阵的转置checkio = lambda matrix:map(list, zip(*matrix))原创 2014-06-11 19:09:53 · 1325 阅读 · 0 评论 -
checkio -- Striped Words
VOWELS = "AEIOUY"CONSONANTS = "BCDFGHJKLMNPQRSTVWXZ"def checkio(s): s=s.replace(","," ") s=s.replace("."," ") l=s.split(' ') count = 0 for i in l: if len(i)原创 2014-05-24 21:49:47 · 1016 阅读 · 0 评论 -
checkio的一些题:Speech Module,Feed Pigeons,Roman numerals,Golden Pyramid,The Most Numbers,Digits Multipl
Speech Moduledef checkio(number): s = "" if number/100 > 0: s+=FIRST_TEN[number/100-1] s+=" " s+=HUNDRED number = number%100 if number > 0:原创 2014-05-24 21:51:46 · 1114 阅读 · 0 评论 -
Python程序的执行过程
1. Python是一门解释型语言?我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存在。如果是解释型语言,那么生成的*.pyc文件是什么呢?c应该是compiled的缩写才对啊!为了防止其他学习Python的人也被这句话误解,那么我们就在文中来澄清下这个问题,并且把一些基础概念给理清。转载 2014-05-23 17:56:50 · 750 阅读 · 0 评论 -
checkio的一些题
checkio=lambdax:bin(x).count('1')原创 2014-05-20 18:00:14 · 1585 阅读 · 0 评论 -
Python 程序员经常犯的 10 个错误
关于PythonPython是一种解释性、面向对象并具有动态语义的高级程序语言。它内建了高级的数据结构,结合了动态类型和动态绑定的优点,这使得它在快速应用开发中非常有吸引力,并且可作为脚本或胶水语言来连接现有的组件或服务。Python支持模块和包,从而鼓励了程序的模块化和代码重用。关于这篇文章Python简单易学的语法可能会使Python开发者–尤其是那些编程的初学者–忽视转载 2014-05-13 22:39:01 · 769 阅读 · 0 评论 -
Python 的变量作用域和 LEGB 原则
在 Python 程序中创建、改变或查找变量名时,都是在一个保存变量名的地方进行中,那个地方我们称之为命名空间。作用域这个术语也称之为命名空间。具体地说,在代码中变量名被赋值(Python 中变量声明即赋值,global 声明的只是变量的使用域)的位置决定了该变量能被访问的范围。函数定义了本地作用域,而模块定义的是全局作用域。这两个作用域之前有如下关系:每一个模块都是全局作用域。也就是转载 2014-05-13 23:10:57 · 1703 阅读 · 0 评论 -
Python 求GCD的lambda表达式
f = lambda x,y:x if y==0 else f(y, x%y)它的效果相当于:def f(arg1,arg2,...):return expression原创 2014-05-18 17:08:53 · 2078 阅读 · 0 评论 -
python 笔记---set
python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算. sets 支持 x in set, len(set),和 for x in set。作为一个无序的集合,sets不记录元素转载 2014-05-18 13:16:46 · 602 阅读 · 0 评论 -
checkio -- Open Labyrinth python BFS的使用
Open Labyrinth def checkio(maze): vis=[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [原创 2014-06-11 19:19:05 · 1708 阅读 · 0 评论 -
Checkio - What does the cow say? 题目和答案
import redef cowsay(words): l=re.split("\s+",words) cutl=[""]*(len(l)+20) j=0 out = "\n" print l for i in l: if len(cutl[j])+len(i)<40: cutl[j]+=i原创 2014-05-30 10:19:45 · 2697 阅读 · 0 评论