Python習題和答案

習題地址:https://github.com/Yixiaohan/show-me-the-code


0进宝、將你的 QQ 頭像(或者微博頭像)右上角加上紅色的數(shù)字永丝,類似于微信未讀信息數(shù)量那種提示效果。 類似于圖中效果
# coding=utf-8
from PIL import Image, ImageDraw, ImageFont # Pillow

# 打開原圖片
openImg = Image.open('./etc/ac345982b2b7d0a2e416b6c2caef76094a369a96.jpg')
size = (0, 0, 125, 125)

# 新圖片
newImg = Image.new('RGB', openImg.size, (0, 0, 0))
draw = ImageDraw.Draw(newImg)

# 粘貼
newImg.paste(openImg.crop(size), # 復制
             size)               # 大小
draw.text((90, 2), # 坐標
          '14',    # 字符串
          font = ImageFont.truetype('./etc/arial.ttf', 24), # 字體
          fill = (255, 0, 0))                               # 顏色
newImg.save('./etc/code1.png', 'png')
原圖片

新圖片

參考:
http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00140767171357714f87a053a824ffd811d98a83b58ec13000
http://liam0205.me/2015/04/22/pil-tutorial-basic-usage/


1屈梁、做為 Apple Store App 獨立開發(fā)者,你要搞限時促銷僚稿,為你的應(yīng)用生成激活碼(或者優(yōu)惠券)姊氓,使用 Python 如何生成 200 個激活碼(或者優(yōu)惠券)丐怯?
# coding=utf-8
import random
from PIL import Image, ImageDraw, ImageFont # Pillow

# 字符串相關(guān)
_String = 'Q W E R T Y U I O P A S D F G H J K L Z X C V B N M q w e r t y u i o p a s d f g h j k l z x c v b n m 1 2 3 4 5 6 7 8 9 0'.split(' ')
_Length = len(_String) - 1

# 生成隨機字符串(優(yōu)惠券id)
# @param {number} length: 字符串長度
# @return {string}: 返回字符串
def randomString(length = 0):
  s = ''
  i = 0
  while i < length:
    s += _String[random.randint(0, _Length)]
    i += 1
  return s

# 生成優(yōu)惠券
# @param {string} stringID: 優(yōu)惠券id
_Font = ImageFont.truetype('./etc/arial.ttf', 24)
def youHuiQuan(stringID):
  img = Image.new('RGB', (200, 40), (0, 0, 0))
  draw = ImageDraw.Draw(img)
  draw.text((5, 8), stringID, font = _Font, fill = (255, 255, 255))
  img.save('./result/' + stringID + '.jpg', 'jpeg')

# 初始化
def init():    
  i = 0   
  j = 5    
  while i < j:
    t = randomString(10)        
    youHuiQuan(t)        
    i += 1

init()

2、將 1 題生成的激活碼(或者優(yōu)惠券)保存到 MySQL關(guān)系型數(shù)據(jù)庫中翔横。
# coding=utf-8
import random
import pymysql
from PIL import Image, ImageDraw, ImageFont # Pillow

# 字符串相關(guān)
_String = 'Q W E R T Y U I O P A S D F G H J K L Z X C V B N M q w e r t y u i o p a s d f g h j k l z x c v b n m 1 2 3 4 5 6 7 8 9 0'.split(' ')
_Length = len(_String) - 1

# 生成隨機字符串(優(yōu)惠券id)
# @param {number} length: 字符串長度
# @return {string}: 返回字符串
def randomString(length = 0):    
  s = ''    
  i = 0   
  while i < length: 
    s += _String[random.randint(0, _Length)]
    i += 1    
  return s

# 生成優(yōu)惠券
# @param {string} stringID: 優(yōu)惠券id
_Font = ImageFont.truetype('./etc/arial.ttf', 24)
def youHuiQuan(stringID):    
  img = Image.new('RGB', (200, 40), (0, 0, 0))    
  draw = ImageDraw.Draw(img)    
  draw.text((5, 8), stringID, font = _Font, fill = (255, 255, 255))    
  img.save('./result/' + stringID + '.jpg', 'jpeg')

# 存入數(shù)據(jù)庫
# @param db: 數(shù)據(jù)庫
# @param cursor: 數(shù)據(jù)庫游標
# @param {string} rs: 隨機字符串
# @return {number}: 返回數(shù)據(jù)庫是否有該字符串的結(jié)果
def sql(db, cursor, rs):    
  # 判斷數(shù)據(jù)庫是否有該字符串    
  sql1 = '''SELECT str FROM random              
            WHERE str = '%s' ''' % (rs)   
  r1 = cursor.execute(sql1)    
  # 如果r1 = 0读跷,表示該字符串沒有生成過    
  if r1 == 0:        
    # 將字符串插入到數(shù)據(jù)庫中        
    sql2 = '''INSERT INTO random                  
              (str) 
              VALUES ('%s')''' % (rs)        
    r2 = cursor.execute(sql2)        
    db.commit()    
  return r1

# 初始化
'''
CREATE TABLE if not exists `random` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `str` varchar(255) DEFAULT NULL, 
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
'''
def init():    
  i = 0   
  j = 4    
  db = pymysql.connect('localhost', 'lianxi', 'lianxi', 'lianxi')   
  cursor = db.cursor()    
  # 循環(huán)    
  while i < j:        
    # 生成隨機字符串并將結(jié)果存入到數(shù)據(jù)庫        
    t = randomString(10)        
    n = sql(db, cursor, t)        
    # 返回0表示該隨機字符串沒有生成過,生成圖片并使i+1       
    if n == 0:            
      youHuiQuan(t)           
      i += 1    
    db.close()

init()

3禾唁、任一個英文的純文本文件效览,統(tǒng)計其中的單詞出現(xiàn)的個數(shù)。
# coding=utf8
import re

# 打開文件并讀取文本
file = open('./etc/t4.txt', 'r')
text = file.read()
file.close()

# 正則
regexp = re.compile(r'''[\s         # 匹配空格 
                        \n          # 匹配換行                        
                        .,!():'"?<> # 匹配特殊符號
                        ]+          # 匹配>=1個符合規(guī)則''', re.X)
newText = re.split(regexp, text)

# 統(tǒng)計每個單詞出現(xiàn)的個數(shù)
# -1是因為數(shù)組的最后一位是''
wordLength = {}
for index in range(len(newText) - 1):    
  if newText[index] in wordLength:
    wordLength[newText[index]] += 1
  else:
    wordLength[newText[index]] = 1

# 輸出結(jié)果
print('A total of ' + str(len(newText) - 1) + ' words appeared.\n')
for key in wordLength:    
  print(key + ':' + str(wordLength[key]))

4蟀俊、用 Python 寫一個爬圖片的程序钦铺,爬這個鏈接里的妹子圖片 :)
# coding=utf8
import re
import urllib
import urllib2

_TieBaURL = 'http://tieba.baidu.com/p/2166231880'

# get請求
def get(url):    
  request = urllib2.Request(url)   
  response = urllib2.urlopen(request)  
  return response.read()

# 獲取圖片字符串
def getImgUrl(html):
  h = re.compile(r'http://([^\s]+)\.(png|jpg)', re.I) 
  return h.findall(html)

# 下載
def download(urls):    
  txt = ''    
  for index in range(len(urls)):        
    t = urls[index][0] + '.' + urls[index][1]  # 文件地址
    u = 'http://' + t                          # http + 文件地址
    urllib.urlretrieve(u, './image/' + str(index) + '.' + urls[index][1])  # 下載并保存
    txt += u + '\n'    
  # 把地址存到文檔里    
  file = open('./image/url.txt', 'w+')    
  file.write(txt)    
  file.close()

# 初始化
def init():    
  html = get(_TieBaURL)  # 請求    
  urls = getImgUrl(html) # 分解獲得地址    
  download(urls)         # 下載

init()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市肢预,隨后出現(xiàn)的幾起案子矛洞,更是在濱河造成了極大的恐慌,老刑警劉巖烫映,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沼本,死亡現(xiàn)場離奇詭異,居然都是意外死亡锭沟,警方通過查閱死者的電腦和手機抽兆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來族淮,“玉大人辫红,你說我怎么就攤上這事∽@保” “怎么了贴妻?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蝙斜。 經(jīng)常有香客問我名惩,道長,這世上最難降的妖魔是什么孕荠? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任娩鹉,我火速辦了婚禮,結(jié)果婚禮上稚伍,老公的妹妹穿的比我還像新娘弯予。我一直安慰自己,他們只是感情好槐瑞,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布熙涤。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪祠挫。 梳的紋絲不亂的頭發(fā)上那槽,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機與錄音等舔,去河邊找鬼骚灸。 笑死,一個胖子當著我的面吹牛慌植,可吹牛的內(nèi)容都是我干的甚牲。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼蝶柿,長吁一口氣:“原來是場噩夢啊……” “哼丈钙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起交汤,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤雏赦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后芙扎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體星岗,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年戒洼,在試婚紗的時候發(fā)現(xiàn)自己被綠了俏橘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡圈浇,死狀恐怖寥掐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情磷蜀,我是刑警寧澤曹仗,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站蠕搜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏收壕。R本人自食惡果不足惜妓灌,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蜜宪。 院中可真熱鬧虫埂,春花似錦、人聲如沸圃验。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至斧散,卻和暖如春供常,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鸡捐。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工栈暇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人箍镜。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓源祈,卻偏偏與公主長得像,于是被迫代替她去往敵國和親色迂。 傳聞我的和親對象是個殘疾皇子香缺,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容

  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個 Awesome - XXX 系列...
    aimaile閱讀 26,452評論 6 428
  • GitHub 上有一個 Awesome - XXX 系列的資源整理,資源非常豐富,涉及面非常廣歇僧。awesome-p...
    若與閱讀 18,629評論 4 418
  • 環(huán)境管理管理Python版本和環(huán)境的工具图张。p–非常簡單的交互式python版本管理工具。pyenv–簡單的Pyth...
    MrHamster閱讀 3,788評論 1 61
  • 時間馏慨,連帶著以時間為節(jié)點的承諾埂淮。淪陷,佯裝掙扎般淪陷写隶。 周一伊始倔撞,便被朋友指出說我有一身和尚氣,看起來像是“對異性...
    不騎孔雀的考拉閱讀 203評論 0 1
  • 想要賺取財富慕趴,必須要了解現(xiàn)金流痪蝇,良好的現(xiàn)金流就像一條河渠,能讓資產(chǎn)的流動始終處于活躍和更新的狀態(tài)冕房。 那么躏啰,什么是現(xiàn)...
    財商大叔閱讀 637評論 1 4