先上网址 https://github.com/Show-Me-the-Code/show-me-the-code

初学python拿来练手,记住一些常用的库和函数

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

 # -*- coding:utf-8 -*-
import sys
import glob,os
from PIL import Image,ImageDraw,ImageFont
type = sys.getfilesystemencoding() font = ImageFont.truetype("msyhbd.ttc",30)
for infile in glob.glob("*.jpg"):
file,ext = os.path.splitext(infile)
im = Image.open(infile)
w,h = im.size
x=w*0.8
y=h*0.1
drawSurface = ImageDraw.Draw(im)
drawSurface.text((x,y), "", fill=(255,0,0), font=font)
im.show()

这个题带来了图像处理的库:PIL

Image和ImageDraw,ImageFont是配套的,Draw可以作画,font可以添加一些东东比如字体

可能比较麻烦的是字体的名字怎么找……打开字体文件夹,随便选中一款字体

右键,选择属性查看名称。如果右键没有属性,说明这个字体里还分了类。。比如我的微软雅黑里面还有细体粗体什么的。。打开再属性就好

第 0001 题:做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)?

激活码,就是平时我们看到的那种很奇葩的乱七八糟的码,数字夹杂了字母

而激活码要保证独一而二,又要考虑存储于数据库,那么必然要和id对应上。

# coding:utf-8
import random
import string def create_code(id,length=10):
id_ = hex(id)
id_ = id_[2:]+'L'
length = length-len(id_)
chars=string.ascii_letters+string.digits;
code=id_+ ''.join([random.choice(chars) for i in range(length)])
return code def get_Id(code):
id_ = code.split('L')[0]
id = int(id_,16)
return str(id) if __name__ == "__main__":
for i in range(0,200):
code = create_code(i)
id = get_Id(code)
print code,id #本篇重点是string中的char列表,还有join,random.choice(chars)用法

根据输出可以看到I与id是相同的,把i当作id生成code,把code转成id说明不变。成功~

chars列表很有意思~原来还能这么玩

第 0002 题:将 0001 题生成的 200 个激活码(或者优惠券)保存到 MySQL 关系型数据库中。

第 0003 题:将 0001 题生成的 200 个激活码(或者优惠券)保存到 Redis 非关系型数据库中。

这两题涉及到数据库~~博主并不会数据库~~等我学了再写这两题咯

第 0004 题:任一个英文的纯文本文件,统计其中的单词出现的个数。

# -*-coding:utf-8 -*—

filename = "image.py"
key = "import"
file = open(filename) text = file.read()
beg = 0
num = 0 while text.find(key) != -1: num = num + 1
text = text.split(key,1)[1]
print num
file.close()

filename和key都是可以自己改的~~~~

这里需要注意的是find()函数。find()如果找得到,就会返回index,如果找不到,就会返回-1.所以千万不可以直接写 if find().无论如何都有返回值……所以一定要写!=-1才能做出正确判断

第 0005 题:你有一个目录,装了很多照片,把它们的尺寸变成都不大于 iPhone5 分辨率的大小。

# -*- coding:utf-8 -*-
import glob,os
from PIL import Image size = 200,200
for file in glob.glob('*.jpg'):
filename,ext = os.path.splitext(file)
im = Image.open(file)
w,h = im.size im.thumbnail(size)
im.save(filename + 'thumbnail.jpg','JPEG')

os.path.splitext()函数会返回两个部分,前一个是文件名(可能含路径),后一个是类型名,glob.glob("")会查找当前目录中符合的文件。如果想获取当前的目录,可以用os.getcwd()。python中类似的方法实在太多了

第 0006 题:你有一个目录,放了你一个月的日记,都是 txt,为了避免分词的问题,假设内容都是英文,请统计出你认为每篇日记最重要的词。

最重要的词,我就把它当出现最多的词咯

# coding:utf-8
import os
import sys
import re
from collections import Counter
type = sys.getfilesystemencoding() def getCounter(file):
f = open(file)
r = re.findall(r'[A-Za-z]+',f.read())
return Counter(r) if __name__ == "__main__":
total_counter = Counter()
for infile in os.listdir(os.getcwd()):
filename,ext = os.path.splitext(infile)
if ext == '.py':
# total_counter += getCounter(infile)
print filename
print getCounter(infile).most_common(2) # print total_counter.most_common()[0][0]

这次用到的是神奇的counter!counter类会对内部的数据进行自动统计计数,http://www.pythoner.com/205.html 这个网址有详细的讲解

第 0007 题:有个目录,里面是你自己写过的程序,统计一下你写过多少行代码。包括空行和注释,但是要分别列出来。

#coding:utf-8
import os
import re
from collections import Counter annotation = r'^\#.'
space = r'^\s+$' if __name__ == "__main__":
for i in os.listdir(os.getcwd()):
code,blank,note = 0,0,0
filename,ext = os.path.splitext(i)
if ext == '.py':
with open(i) as f:
line = f.readline()
while line:
if re.match(space,line):
blank += 1
elif re.match(annotation,line):
note += 1
else:
code += 1 line = f.readline()
print filename
print "code:%d, blank:%d, note:%d"%(code,blank,note)

同样还是在当前目录下运行……定义了注释和空格符的正则,由于不会写代码的正则干脆用else来表示了,与c不同的是else if写成elif……

re.match()就是捕获咯,第一个参数是正则式,第二个参数就是看你检验的字符串啦

第 0008 题:一个HTML文件,找出里面的正文

#coding:utf-8
import glob,os
import requests
from bs4 import BeautifulSoup
import sys
ty = sys.getfilesystemencoding()
url = "https://github.com/Show-Me-the-Code/python/blob/master/Forec/0008/0008.py"
html = requests.get(url)
soup = BeautifulSoup(html.text,"html.parser")
print soup.body.text.encode('GBK','ignore').decode('GBK')

鼎鼎大名的bs4!!!!

曾经初学爬虫………………用urllib爬下来然后partition...index....虽然也能做出效果然而实在蛋疼

beautifulsoup会把html代码结构化。soup.body.text指的就是body的全部字符咯,当然也可以尝试输出soup.body.div……不过这样输出的是不含子结构的div,否则是检查不到的~~~那么要怎么才能明确输出某个藏在很深很深结构里标签呢?下面就是这个啦

第 0009 题:一个HTML文件,找出里面的链接。换成<a>标签去找。。。就好

第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-)

#coding:utf-8
import requests
import urllib2
from bs4 import BeautifulSoup
import lxml.html
url = "http://tieba.baidu.com/p/2166231880" html = requests.get(url)
soup = BeautifulSoup(html.text,"html.parser")
lis = soup.find_all('img')
count = 1
for img in lis:
src = img.attrs['src']
start = src.rfind('/')+1
end = src.rfind('?') if src.rfind('?') != -1 else len(src)
name = src[start:end]
#print name
filepath = 'e:/image/'+str(count)+name
with open(filepath,'wb') as f:
# image_data = urllib2.urlopen(src).read() #bs4这里好像下不了
image_data = requests.get(src).content #bs4的用法
f.write(image_data)
count += 1

注意find_all函数。。。。不管这个img标签藏得多么深。。这么写就会通通把他们找出来啦

 

github/python/ show me the code 25题(一)的更多相关文章

  1. github/python/ show me the code 25题(二)

    第 0014 题: 纯文本文件 student.txt为学生信息, 里面的内容(包括花括号)如下所示: { "1":["张三",150,120,100], &q ...

  2. 剑指offer 面试25题

    面试25题:题目:合并两个排序的链表 题:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 解题思路:递归,并需注意对空链表单独处理. 解题代码: # -* ...

  3. 通过欧拉计划学习Rust编程(第22~25题)

    最近想学习Libra数字货币的MOVE语言,发现它是用Rust编写的,所以先补一下Rust的基础知识.学习了一段时间,发现Rust的学习曲线非常陡峭,不过仍有快速入门的办法. 学习任何一项技能最怕没有 ...

  4. 各位大佬Python的第一部分道基础题已经整理好了,希望大家面试的时候能用的上。

    Python的第一部分道基础题,希望大家面试的时候能用的上. 1.为什么学习Python? Python是目前市面上,我个人认为是最简洁.最优雅.最有前途.最全能的编程语言,没有之一. 2.通过什么途 ...

  5. FaceRank-项目上了 GitHub Python Trending

    FaceRank-人脸打分基于 TensorFlow 的 CNN 模型 GitHub Python Trending 第一次上 trending ,虽然只是分类榜. https://github.co ...

  6. [转]Python in Visual Studio Code

    本文转自:https://code.visualstudio.com/docs/languages/python Working with Python in Visual Studio Code, ...

  7. [置顶] 刘汝佳《训练指南》动态规划::Beginner (25题)解题报告汇总

    本文出自   http://blog.csdn.net/shuangde800 刘汝佳<算法竞赛入门经典-训练指南>的动态规划部分的习题Beginner  打开 这个专题一共有25题,刷完 ...

  8. 学习参考《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    国内编写的关于python入门的书,初学者可以看看. 参考: <零基础入门学习Python>电子书PDF+笔记+课后题及答案 Python3入门必备; 小甲鱼手把手教授Python; 包含 ...

  9. 学习《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    初学python入门建议学习<零基础入门学习Python>.适合新手入门,很简单很易懂.前一半将语法,后一半讲了实际的应用. Python3入门必备,小甲鱼手把手教授Python,包含电子 ...

随机推荐

  1. Silverlight学习(五)图形标绘

    Silverlight中进行图形标绘的方法太多了,这里的标绘和Arcgis中的标绘不同,这里大多是静态的标绘.标绘的方法主要有Path(路径标记法).直接标绘(Line等).几何标记(LineGeom ...

  2. matlab中norm与svd函数用法

    格式:n=norm(A,p) 功能:norm函数可计算几种不同类型的矩阵范数,根据p的不同可得到不同的范数 以下是Matlab中help norm 的解释: NORM Matrix or vector ...

  3. visual assist常用快捷键

    转自http://my.oschina.net/u/211101/blog/127822 一些打开啊新建就不说了…… //先来个我自己最喜欢的,经常不用,老忘记,以前eclipse最喜欢这个快捷键了 ...

  4. Jquery实现图片切换效果(IE,FF,Goole)都可以正常运行

    这里先对标签的样式进行设置(我这里只用了3张图片,可以根据自己的情况,添加) <style type="text/css"> /*展示图片切换的div样式*/ #Sho ...

  5. Manifest merger failed : uses-sdk:minSdkVersion 9 cannot be smaller than version 10 declared in library

    Error:Execution failed for task ':app:processDebugManifest'. > Manifest merger failed : uses-sdk: ...

  6. IPTV小窗口播放视频 页面焦点无法移动的解决方法

    在IPTV高清页面中,小窗口播放视频时,在某些机顶盒上(如高清中兴.高清大亚4904)会出现焦点无法移动现象,即按键无响应.被这个bug困扰了很久,虽然我知道解决方法,但只知其然,不知其所以然.今天做 ...

  7. 论山寨手机与Android联姻 【9】SmartPhone的硬件结构

    如何区别智能手机(SmartPhone)与功能手机(FeaturePhone)? 有一种观点认为,智能手机本质上是功能手机与便携式电脑(Laptop PC)的结合.功能手机的功能受限于制造厂商的预制, ...

  8. Fsu0413's Qt builds

    http://fsu0413.github.io/QtCompile/#!index.md

  9. JavaScript js生成GUID

    function generateUUID(){ var d = new Date().getTime(); var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxx ...

  10. Linux学习之第十九、条件判断

    原文地址:http://vbird.dic.ksu.edu.tw/linux_basic/0340bashshell-scripts_4.php 条件判断式 只要讲到『程序』的话,那么条件判断式,亦即 ...