Python练习册0-9

来源:互联网 发布:淘宝转运到澳洲要多久 编辑:程序博客网 时间:2024/05/20 14:25

Python练习册0-9

By 白熊花田(http://blog.csdn.net/whiterbear) 转载需注明出处,谢谢。

这段时间在家做了点Python练习册里的题目,里面的题目都不是很难,但是做起来还是要费点时间的,适合熟悉python的使用。这里先给出前十道题的解答思路和代码。

第 0000 题:将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果。
类似于图中效果

头像

思路:利用Python的PIL模块,PIL模块提供了图片生成,图片绘制等方法。本题需要利用PIL中ImageFont模块,在调用时会报The _imagingft C module is not installed错,可以参考这篇博客解决。

第 0001 题:做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)?
思路:首先搞懂优惠券是什么东西,优惠券是活动时给用户发送的独一无二的能验证的标示号。生成不重复的标示号并不难,但是,如果想生成易识别不易伪造的标示号你可能要参考这篇博客。

第 0002 题:将 0001 题生成的 200 个激活码(或者优惠券)保存到 MySQL 关系型数据库中。
思路:安装mysql,学习常见的几个python操作mysql的代码即可。Mac下安装使用mysql似乎比其他平台更麻烦,可参考这篇博客来安装配置Mysql。

第 0003 题:将 0001 题生成的 200 个激活码(或者优惠券)保存到 Redis 非关系型数据库中。
思路:第一次接触NoSQL,先去搜索了redis以及其他几个非关系型数据库的特性,然后去官网下载了redis,安装了redis后又去安装了python下的redis模块。
下面给出简单的redis安装使用以及python的redis模块的安装使用。
下载:
去官网下载最新版本的redis,我的是redis-3.0.2
安装:
进入redis-3.0.2目录,输入make,之后输入make test
启动redis服务:
在redis目录下,输入:src/redis-server
关闭redis服务:
jhbdeMacBook-Pro:redis-3.0.2 jhb$ src/redis-cli
127.0.0.1:6379> shutdown
not connected>

redis还有很多其他的命令和相关配置的编辑,具体可以谷歌之。
python下使用redis需要:
sudo pip install redis
引用:
import redis
连接:
r = redis.Redis(host='localhost', port=6379, db=0)
其他用法请参考API文档

第 0004 题:任一个英文的纯文本文件,统计其中的单词出现的个数。
思路:遍历文本,使用split进行分词,用字典进行存储。

第 0005 题:你有一个目录,装了很多照片,把它们的尺寸变成都不大于 iPhone5 分辨率的大小。
思路:又是一道需要PIL解决的题。PIL的Image模块提供了resize函数,可以根据给定的size重新保存图片。判断图片size是否大于iPhone5的尺寸,然后按照长宽差距较大的进行图片成比例缩放,然后保存。

第 0006 题:你有一个目录,放了你一个月的日记,都是 txt,为了避免分词的问题,假设内容都是英文,请统计出你认为每篇日记最重要的词。
思路:依旧是文本单词统计找出出现频率最高的几个词代表整篇日记的特征。要注意的是,有些词出现频率很高,但是不能是重要的词,比如a, the, is等,它们是停止词,需要过滤掉它们。当然,即使是去除了停止词也只是粗略的找出重要的词,深入的分析还需要计算每个词的权重(TF-IDF?),这里不做深入讨论。

第 0007 题:有个目录,里面是你自己写过的程序,统计一下你写过多少行代码。包括空行和注释,但是要分别列出来。
思路:获取目录下所有的文件,提取文件是.py or .c or .cpp or .java等结尾的。对于不同类型的程序文件需要单独处理。我只实现了.py的文件的统计。依次打开文件,遍历每行,用正则判断是否是注释,如果不是,判断本行是否含有非空白符,有则为代码,无即为空行。需要注意的是,通过windows下记事本以utf-8保存的文件会有BOM头,会导致首行注释判断失败。

第 0008 题:一个HTML文件,找出里面的正文
思路:使用BeautifulSoup模块,然而,有些html文本在用BeautifulSoup的text属性时,仍然会输出一些js的代码。建议还是使用其他方法比如正则匹配来做吧。

第 0009 题:一个HTML文件,找出里面的链接
思路:使用requests获取网页,用正则提取出所有的链接。

代码链接

  • github:Show-Me-the-Code
  • csdn下载
0 0