showmethecode练习之笔记

show-me-the-code 笔记

https://github.com/Yixiaohan/show-me-the-code 是一个python初学练习题集合,每个人从上述地址fork之后编码可以提交自己的代码。我的练习答案在这里:https://github.com/gongqingkui/python/tree/master/gongqingkui 参阅目前大家提交的代码,笔记如下

0000 头像右上角加上红色的数字

一种常见方法,from PIL import Image来读取图片并附加字符。需要定义draw和ImageFont来画图。

In [ ]:
from PIL import Image,ImageDraw,ImageFont

#add num to image
def addnum(image,num):
    with Image.open(image) as head:
        w,h = head.size
        font = ImageFont.truetype('arial.ttf',25)
        draw = ImageDraw.Draw(head)
        draw.text((0.8*w,0.1*h),str(num),fill=(255,0,0),font=font)
        head.save('head2.jpg')

if __name__ =='__main__':
    addnum('head.jpg',68)

0001 生成 200 个激活码

  • 使用random.randint来随机数字,在选择其后的内容。eg. a=string.letters a[random.randint(26)]
  • random.sample 随机一个样本 eg. random.sample(string.letters,20)
  • random.choice
  • random.randrange()
  • string.letters+string.digits
  • string.ascii_uppercase
  • uuid 方法
  • xrange生成一个生成器,节省空间,建议使用。range生成一个列表list
  • 字典遍历
In [30]:
print(string.letters)
print(string.digits+string.ascii_uppercase)
import random
print(random.randrange(30),random.choice(string.letters),random.sample(string.letters,3))
#print('%d'%tuple([random.randint(1000,9999) for i in xrange(5)]))
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
(19, 'p', ['u', 'n', 'E'])
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
 in ()
      3 import random
      4 print(random.randrange(30),random.choice(string.letters),random.sample(string.letters,3))
----> 5 print('%d'%tuple([random.randint(1000,9999) for i in xrange(5)]))

TypeError: not all arguments converted during string formatting
In [10]:
import string
import random
import uuid

print(string.letters[random.randint(0,54)])
print(random.sample(string.letters,10))
print(uuid.uuid1())
x
['t', 'd', 'J', 'C', 'B', 'X', 'k', 'o', 'S', 'r']
0640442e-1bd1-11e8-b041-0024540e01d2
  • 集合
In [31]:
a={1,2,3}
b={4,5}
b|=a
a|={'abc'}
print(a,b)
(set([1, 2, 3, 'abc']), set([1, 2, 3, 4, 5]))
In [ ]:
a=range(3,5)
b=xrange(3,5)
print a,b
In [ ]:
dicts={'1':'zhangsan','2':'lisi'}
raw = '|'.join([k+':'+v for k,v in dicts.items()])
print raw

0002激活码存到 MySQL 关系库中

  • 用pymsql库,或者sqlalchemy
  • 生成器
In [41]:
def gen(n):
    for i in xrange(n):
        yield random.randrange(9)
for g in gen(5):
    print(g)
    
import os
print(os.getcwd())
1
3
1
8
1
D:\www.gongqingkui.cn\doing\showmethecode

0003 激活码保存到 Redis 非关系型数据库中

用redis库

0004 统计其中的单词出现的个数

  • collections.Counter
  • 正则表达式re.findall(r'[a-zA-Z0-9]+',data) re.split(r" ",data) re.findall(r'\w+',data)
  • 排序 sortedwordlist = sorted(worddict.items(),lambda x,y:cmp(x[1],y[1]),reverse=True)
  • translate() 方法根据参数table给出的表(包含 256 个字符)转换字符串的字符, 要过滤掉的字符放到 del 参数中
In [56]:
import re
data="The quick fox jumps over the lazy brown dog."
print re.split(r" ",data)
print data.strip().translate(None,string.punctuation)
print re.findall(r'[a-zA-Z0-9]+',data)
print re.findall(r'\w+',data)
print len([x for x in data.split() if x!=' '])
['The', 'quick', 'fox', 'jumps', 'over', 'the', 'lazy', 'brown', 'dog.']
The quick fox jumps over the lazy brown dog
['The', 'quick', 'fox', 'jumps', 'over', 'the', 'lazy', 'brown', 'dog']
['The', 'quick', 'fox', 'jumps', 'over', 'the', 'lazy', 'brown', 'dog']
9
  • 文件读写
In [63]:
print [line.strip() for line in open('filtered_words.txt')]
['\xb1\xb1\xbe\xa9', '\xb3\xcc\xd0\xf2\xd4\xb1', '\xb9\xab\xce\xf1\xd4\xb1', '\xc1\xec\xb5\xbc', '\xc5\xa3\xb1\xc8', '\xc5\xa3\xb1\xc6', '\xc4\xe3\xc4\xef', '\xc4\xe3\xc2\xe8', 'love', 'sex', 'jiangge']

0005 照尺寸变成都不大于 iPhone5 分辨率的大小

  • 遍历目录 os.walk递归当前目录,glob.glob('*.jpg')遍历文件 ,os.listdir(path)
  • Image有缩略图方法
  • 数学 /除法 //整除 除法/ 两数为整数相当于整除
In [89]:
print os.getcwd()

print ''.join([x for x in os.listdir('.') if os.path.isfile(x) and x.endswith('.jpg')])

print os.path.splitext(os.getcwd()+'/a.jpg')
import glob
glob.glob('*.jpg')
D:\www.gongqingkui.cn\doing\showmethecode\image
0001.jpg0002.jpg0003.jpg
('D:\\www.gongqingkui.cn\\doing\\showmethecode\\image/a', '.jpg')
Out[89]:
['0001.jpg', '0002.jpg', '0003.jpg']
In [ ]:
string.rfind('.')
print(7/3,7//3,7.0/3,7.0//3)
In [ ]:
import os
for root,dirs,files in os.walk('.'):
    pass
  • 赋值
In [ ]:
debug = True
a=3 if debug==True else 5
print(a)

0006 每篇日记最重要的词。

  • 先用0004题目分析单词,在除去助词,最后分析词频即可。
  • 字典排序 items=sorted(dicts.items(),key=lambda d:d[1],reverse=True) 这是根据value值来排序字典
In [71]:
dicts={'2':'anbang','1':'zhanghua'}
print sorted(dicts.items(),key=lambda d:d[1],reverse=True)
print sorted(dicts.items(),key=lambda d:d[1],reverse=False)
import operator
print sorted(dicts.items(),key=operator.itemgetter(0))
print sorted(dicts.items(),key=operator.itemgetter(1))
[('1', 'zhanghua'), ('2', 'anbang')]
[('2', 'anbang'), ('1', 'zhanghua')]
[('1', 'zhanghua'), ('2', 'anbang')]
[('2', 'anbang'), ('1', 'zhanghua')]

0007 统计一下你写过多少行代码。包括空行和注释

  • 行头判断
  • .endswith 只能是str 或者tuple 不能使list
In [92]:
fs=('.c','.py','.cpp')
if 'aa.c'.endswith(fs):
    print 'ok'
ok

0008 html正文

  • BeautifulSoup库
  • 正则 re.findall(r'[\s\S]*',data.text)
  • content.decode('GBK').encode('utf-8')

0009 所有a

  • doc=pyquery.PyQuery(resp.content.decode()) #### 0010 验证码
  • 廖雪峰参考代码写的挺好的

0011 屏蔽关键字

  • 正则表达式
  • open(f,'r',encoding='utf-8')

0012 屏蔽关键字

  • 正则表达式
  • input=raw_input()
  • try: input= unicode(input) except: try:
    input = unicode(input.decode('utf-8'))
    
    except:
    try:
      input = unicode(input.decode('gbk'))
  • ''len(x)
  • re.sub(mingan,''len(mingan),youword)

0013 爬虫

  • pyQuery
  • ulrretrieve

0014 0015 0016 0017 0018 0019 xml txt xls转换

  • eval函数
  • _student = eval(f.read())
  • xlwt库 xlwt.Workbook().add.sheet('student').write(x,y,data,style)
  • 正则表达式
  • r'\"(\d+)\":[\"(.*?)\",(\d+),(\d+),(\d+)}'
  • from lxml import etree

0020 通话时长

  • 正则表达式 re.compile(r'([\d+)秒').findall(table.cell(i,j).value)

0021 加密密码

- salt的理解

In [ ]:
def enpass(password,salt=None):
    if salt is None:
        salt = str(uuid.uuid4())[:4]        
    assert 4==len(salt)
    return salt+':'+hashlib.sha256(password.encode()+salt.encode()).hexdigest()

0022 图片转换程序的通用性

  • iphonesize = {"iphone5":(640,1136),"iphone6s":(1125,2000),"iphone6sp":(1242,2208)}

0023 留言板

  • flask

0024 TodoList

  • flask

0025

  • 百度音频解析框架from aip import AipSpeech
  • from pyaudio import PyAudio,paInt16来录音
  • wave 录音保存为wav文件
  • 提交wave文件到aip框架,解析出结果
  • win32api 判断结果 win32api.ShellExecute(0,'open','http://mail.126.com','','',1)打开

你可能感兴趣的:(具体技术)