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

【图像处理】

类似于图中效果:

py 2.7代码:

from PIL import Image, ImageDraw, ImageFont
def add_word(img):
char_size = 30
fillcolor = "#ff0000"
draw = ImageDraw.Draw(img)
my_font = ImageFont.truetype(r'C:\Windows\Fonts\SIMYOU.TTF', char_size)#从本地载入字体文件
width, height = img.size
draw.text((width - char_size,char_size-20), '', font=my_font, fill=fillcolor)
img.save('result.jpg','JPEG')
del draw if __name__ == "__main__":
img = Image.open('test.jpg')
add_word(img)

更多:

draw.line((0, 0) + im.size, fill=128)  #画一道线

参考文档:

pillow 函数接口查询 官方文档


02:任一个英文的纯文本文件,统计其中的单词出现的个数【文本处理】

import re

def statis_words(article):
re_pat = re.compile("\W",re.S)
pre_article = re.sub(re_pat," ",article)
re_pat2 = re.compile(" *",re.S)
list_words = re_pat2.split(pre_article)
dict_re = dict.fromkeys(list_words)
for i in list_words:
if not dict_re[i]:
dict_re[i] = 0
if i in list_words:
dict_re[i]+=1
for i in dict_re.iteritems():#打印
print i if __name__ == "__main__":
file_path = "words.txt"
article = ""
with open(file_path) as f:
for i in f.readlines():
article += i
statis_words(article.replace("\n",' '))

03:你有一个目录,装了很多照片,把它们的尺寸变成都不大于 iPhone5 分辨率的大小【图像处理】

import os
from PIL import Image iPhone5_WIDTH = 1136
iPhone5_HEIGHT = 640 def resize_iPhone5_pic(path, new_path, width=iPhone5_WIDTH, height=iPhone5_HEIGHT):
im = Image.open(path)
w,h = im.size if w > width:
h = width * h // w
w = width
if h > height:
w = height * w // h
h = height im_resized = im.resize((w,h), Image.ANTIALIAS)
im_resized.save(new_path) def walk_dir_and_resize(path):
for root, dirs, files in os.walk(path):#递归path下所有目录
for f_name in files:
if f_name.lower().endswith('jpg'):
path_dst = os.path.join(root,f_name)
f_new_name = 'iPhone5_' + f_name
resize_iPhone5_pic(path=path_dst, new_path=f_new_name) if __name__ == '__main__':
walk_dir_and_resize('./')#当前目录

核心函数  image.resize()

Image.resize(sizeresample=0)

Returns a resized copy of this image.

Parameters:
  • size – The requested size in pixels, as a 2-tuple: (width, height).
  • resample – An optional resampling filter. This can be one of PIL.Image.NEAREST (use nearest neighbour), PIL.Image.BILINEAR (linear interpolation), PIL.Image.BICUBIC(cubic spline interpolation), or PIL.Image.LANCZOS (a high-quality downsampling filter). If omitted, or if the image has mode “1” or “P”, it is set PIL.Image.NEAREST.
Returns:

An Image object.

size: 图像宽度,长度

resample:

PIL.Image.NEAREST (use nearest neighbour)   最近邻插值法

PIL.Image.BILINEAR (linear interpolation),   双线性插值法

PIL.Image.BICUBIC(cubic spline interpolation), 双三次插值

or PIL.Image.LANCZOS (a high-quality downsampling filter)   Lanczos算法  采样放缩算法

缩小时 ANTIALIAS

更多图像处理请参考 opencv

reference:Image Module


04:你有一个目录,放了你一个月的日记,都是 txt,为了避免分词的问题,假设内容都是英文,请统计出你认为每篇日记最重要的词【字符串处理】【文件管理】

注:暂认为出现频率最多的为最重要的

#文件管理
#coding:utf-8
import os
import re def analyse_article(article):
re_pat = re.compile("(?=[\n\x21-\x7e]+)[^A-Za-z0-9]")#+|[{}【】。,;“‘”?]")#("^([\u4e00-\u9fa5]+|[a-zA-Z0-9]+)$")#("(?=[\x21-\x7e]+)[^A-Za-z0-9]+|["{}【】。,;’“‘”?"]")#("[\W\u4e00-\u9fa5] ",re.S) \s 空格符
pre_article = re.sub(re_pat," ",article)
chinese_symbol = ["\xa1\xa3","\xa1\xb0","\xa1\xb1","\xa3\xac","\xa1\xbe","\xa1\xbf","\xa1\xb6","\xa1\xb7","\xa3\xba","\xa3\xbb"]#中文标点
for i in chinese_symbol:
pre_article = pre_article.replace(i," ")
re_pat2 = re.compile(" *",re.S)
list_words = re_pat2.split(pre_article)
dict_re = dict.fromkeys(list_words)
#print pre_article
for i in list_words:
if not dict_re[i]:
dict_re[i] = 0
if i in list_words:
dict_re[i]+=1
if dict_re.get(""):
del dict_re[""]
key_words = sorted(dict_re.items(),key = lambda e:e[1])[-1]
return (key_words[0], key_words[1]) def walk_dir_and_analyse(path):
text = ""
key_words_list = []
for root, dirs, files in os.walk(path):#递归path下所有目录
for f_name in files:
if f_name.lower().endswith('txt'):
with open(os.path.join(root,f_name)) as f:
for i in f.readlines():
text += i
key_words_list.append(analyse_article(text)) for i in key_words_list:
print "\""+ i[0] + "\" for "+ str(i[1]) +" times" if __name__ == "__main__":
walk_dir_and_analyse("./")

输出

>python 4.py
"春眠不觉晓" for 2 times


05:敏感词文本文件 filtered_words.txt,当用户输入敏感词语,则用星号 * 替换,例如当用户输入「北京是个好城市」,则变成「**是个好城市」。

#[字符串处理]
#敏感词文本文件 filtered_words.txt,
#里面的内容为以下内容,当用户输入敏感词语时,
#python ' '中将自动加入结尾符号,要注意字串实际长度,包括读入txt文件时的字符串长度
#coding:utf-8 def words_filter(path,words_list):
content = ""
with open(path) as f:
for i in f.readlines():
for j in words_list:
if j in i:
i = i.replace(j,"*"*(len(j)/(len('单')-1))) #一个中文两个字节长度
content += i
return content if __name__ == "__main__":
word_path = "filtered_words.txt"
path = "words.txt" words_list = []
with open(word_path) as f:
for i in f.readlines():
words_list.append(i.replace("\n",""))
print words_filter(path,words_list)

Python 练习册的更多相关文章

  1. Python练习册--PIL处理图片之加水印

    背景 最近在看到了Python 练习册,每天一个小程序 这个项目,非常有趣,也比较实用. 晚上看了这第000题,关于Python图片处理: 将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似 ...

  2. Python 练习册--生成唯一激活码(邀请码)

    题目是这样子的: 做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)? 分析 其实要生成 ...

  3. Python 练习册,每天一个小程序----第0000题

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

  4. python练习册0004题

    在任意一个英文文档中,统计单词出现的次数, 分析: 本题不是很难,单词通常以空格隔开,但是有些单词后面跟一些特殊符号,只需把这些特殊符号替换掉就可以了, 代码一 import re file_name ...

  5. 【python练习册】1.3 将1.2题生成的n个激活码保存到mysql关系型数据库中

    该题涉及到mysql中一些指令,先熟悉一下 MySQL指令 参考:https://www.cnblogs.com/zhuyongzhe/p/7686105.html mysql -u root -p ...

  6. python练习册 每天一个小程序 第0013题

    # -*-coding:utf-8-*- ''' 题目描述: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-) 地址: http://tieba.baidu.com/p/21 ...

  7. python练习册 每天一个小程序 第0010题

    # -*-coding:utf-8-*- ''' 题目描述: 使用 Python 生成类似于下图中的字母验证码图片 思路: 运用PIL库加random 随机字母进行生成 ''' import rand ...

  8. python练习册 每天一个小程序 第0001题

    1 # -*-coding:utf-8-*- 2 __author__ = 'Deen' 3 ''' 4 题目描述: 5 做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生 ...

  9. python练习册 每天一个小程序 第0000题

    PIL库学习链接:http://blog.csdn.net/column/details/pythonpil.html?&page=1 1 #-*-coding:utf-8-*- 2 __au ...

随机推荐

  1. php基础系列:PHP连接MySQL数据库用到的三种API

    参考自php手册.本文没有太大意义,仅为方便自己上网查阅. 1.PHP的MySQL扩展2.PHP的mysqli扩展3.PHP数据对象(PDO) MySQL扩展函数 这是设计开发允许PHP应用与MySQ ...

  2. MSDN论坛被垃圾信息刷爆了!!!

    https://social.msdn.microsoft.com/Forums/zh-CN/caab1275-103e-470e-8888-ca39d1c48364/linehx2888?forum ...

  3. androidSDK无法更新的解决方法之一

    方法来源于: http://www.eoeandroid.com/thread-281075-1-1.html 试试这个,能解决国内访问Google服务器的困难启动 Android SDK Manag ...

  4. noip2013 积木大赛

    题目描述 春春幼儿园举办了一年一度的“积木大赛”.今年比赛的内容是搭建一座宽度为n的大厦,大厦可以看成由n块宽度为1的积木组成,第i块积木的最终高度需要是hi. 在搭建开始之前,没有任何积木(可以看成 ...

  5. java(搜索不区分大小写)

    ref.put("myfield", Pattern.compile(".*myValue.*" , Pattern.CASE_INSENSITIVE));

  6. DataTable详解,以及dataview

    原文地址:http://www.cnblogs.com/moss_tan_jun/archive/2010/09/20/1832131.html 得到DataTable 得到DataTable有许多方 ...

  7. 千位分隔符(js 实现)

    最近被同事问到js如何实现给长数字添加千位分隔符,即 1344444 ---> 13,444,444 这是一个很常见的前端面试题.看起来简单,刚开始我都懒得写. 仔细一想,挺考逻辑的,实现方法有 ...

  8. zlog学习笔记(zc_hashtable)

    zc_hashtable.h /** * hashtable */ #ifndef __zc_hashtable_h #define __zc_hashtable_h typedef struct z ...

  9. ASP.NET MVC图片上传前预览

    回老家过春节,大半个月,在家的日子里,吃好睡好,人也长了3.5Kg.没有电脑,没有网络,无需写代码,工作上相关的完全放下......开心与父母妻儿过个年,那样的生活令Insus.NET现在还在留恋.. ...

  10. Html5 Egret游戏开发 成语大挑战(五)界面切换和数据处理

    经过前面的制作,使用Egret的Wing很快完成了开始界面和选关卡界面,下面通常来说就是游戏界面,但此时界面切换和关卡数据还没有准备好,这次讲解界面的切换和关卡数据的解析.前面多次修改了Main.ts ...