Python 項目案例開發從入門到實戰 — 爬蟲、游戲和機器學習
內容描述
本書以Python 3.5為編程環境,從基本的程序設計思想入手,逐步展開Python語言教學,是一本面向廣大編程學習者的程序設計類圖書。本書以案例帶動知識點的講解,將Python知識點分解到各個不同的案例,每個案例各有側重點,同時展示實際項目的設計思想和設計理念,使讀者可以舉一反三。
本書案例具有實用性,例如校園網搜索引擎、小小翻譯器、抓取百度圖片這些爬蟲案例略加修改可以應用到實際項目中;還有通過微信通信協議開發微信機器人、機器學習的文本分類、基於卷積神經網絡的手寫體識別等案例;另外是一些大家耳熟能詳的遊戲案例,例如連連看、推箱子、中國象棋、網絡五子棋、兩人麻將、人物拼圖和飛機大戰等遊戲。通過本書,讀者將掌握Python編程技術和技巧,學會面向對象的設計方法,了解程序設計的所有相關內容。本書不僅為讀者列出了完整的代碼,同時對所有的源代碼都進行了非常詳細的解釋,通俗易懂、圖文並茂。掃描每章提供的二維碼可觀看知識點的視頻講解。
本書適用於Python語言學習者、程序設計人員和遊戲編程愛好者。
目錄大綱
第1章Python基礎知識1
1.1 Python語言簡介1
1.2 Python語法基礎2
1.2.1 Python數據類型2
1.2.2序列數據結構4
1.2.3 Python控制語句12
1.2.4 Python函數與模塊18
1.3 Python面向對象設計22
1.3.1定義和使用類22
1.3.2構造函數23
1.3.3析構函數24
1.3.4實例屬性和類屬性24
1.3.5私有成員與公有成員25
1.3.6方法26
1.3.7類的繼承27
1.3.8多態29
1.3.9面向對象應用案例——撲克牌發牌程序31
1.4 Python圖形界面設計34
1.4.1創建Windows窗口35
1.4.2幾何佈局管理器35
1.4.3 Tkinter組件39
1.4.4 Tkinter字體49
1.4.5 Python事件處理51
1.4.6圖形界面設計應用案例——開發猜數字遊戲55
1.5 Python文件的使用57
1.5.1打開/建立文件57
1.5.2讀取文本文件59
1.5.3寫文本文件60
1.5.4文件內移動62
1.5.5文件的關閉63
1.5.6二進製文件的讀/寫64
1.6 Python的第三方庫66
第2章序列應用——猜單詞遊戲67
2.1猜單詞遊戲功能介紹67
2.2程序設計的思路67
2.3關鍵技術——random模塊68
2.4程序設計的步驟71
第3章數據庫應用——智力問答測試73
3.1智力問答測試功能介紹73
3.2程序設計的思路73
3.3關鍵技術74
3.3.1訪問數據庫的步驟74
3.3.2創建數據庫和表75
3.3.3數據庫的插入、更新和刪除操作76
3.3.4數據庫表的查詢操作77
3.3.5數據庫使用實例——學生通訊錄77
3.4程序設計的步驟80
3.4.1生成試題庫80
3.4.2讀取試題信息81
3.4.3界面和邏輯設計81
第4章調用百度API應用——小小翻譯器83
4.1小小翻譯器功能介紹83
4.2程序設計的思路83
4.3關鍵技術84
4.3.1 urllib庫簡介84
4.3.2 urllib庫的基本使用84
4.4程序設計的步驟90
4.4.1設計界面90
4.4.2使用百度翻譯開放平台API 90
第5章爬蟲應用——校園網搜索引擎95
5.1校園網搜索引擎功能分析95
5.2校園網搜索引擎系統設計95
5.3關鍵技術98
5.3.1正則表達式98
5.3.2中文分詞103
5.3.3安裝和使用jieba 103
5.3.4為jieba添加自定義詞典104
5.3.5文本分類的關鍵詞提取105
5.3.6 deque 106
5.4程序設計的步驟107
5.4.1信息採集模塊——網絡爬蟲的實現107
5.4.2索引模塊——建立倒排詞表111
5.4.3網頁排名和搜索模塊113
第6章爬蟲應用——抓取百度圖片116
6.1程序功能介紹116
6.2程序設計的思路116
6.3關鍵技術117
6.3.1圖片文件下載到本地117
6.3.2爬取指定網頁中的圖片117
6.3.3 BeautifulSoup庫概述119
6.3.4用BeautifulSoup庫操作解析HTML文檔樹121
6.3.5 requests庫的使用125
6.4程序設計的步驟133
6.4.1分析網頁源代碼和網頁結構133
6.4.2設計代碼136
第7章itchat應用——微信機器人139
7.1 itchat功能介紹139
7.2程序設計的思路140
7.3關鍵技術140
7.3.1安裝itchat 140
7.3.2 itchat的登錄微信140
7.3.3 itchat的消息類型141
7.3.4 itchat回复消息143
7.3.5 itchat獲取賬號145
7.3.6 itchat的一些簡單應用147
7.3.7 Python調用圖靈機器人API實現簡單的人機交互150
7.4程序設計的步驟152
7.5開發消息同步機器人153
第8章微信網頁版協議應用——微信機器人155
8.1微信網頁版機器人功能介紹155
8.2微信網頁版機器人設計思路155
8.2.1分析微信網頁版API 155
8.2.2 API匯總158
8.2.3其他說明164
8.3程序設計的步驟166
8.3.1微信網頁版的運行流程166
8.3.2程序目錄167
8.3.3微信網頁版運行代碼的實現167
8.4擴展功能170
8.4.1自動回复170
8.4.2群發消息、定時發送消息、好友狀態檢測173
8.4.3自動邀請好友加入群聊175
第9章圖像處理——生成二維碼和驗證碼178
9.1二維碼介紹178
9.2二維碼生成和解析關鍵技術179
9.2.1 qrcode庫的使用179
9.2.2 PIL庫的使用182
9.3二維碼生成和解析程序設計的步驟184
9.3.1生成帶有圖標的二維碼184
9.3.2 Python解析二維碼圖片186
9.4用Python生成驗證碼圖片186
第10章益智遊戲——連連看遊戲189
10.1連連看遊戲介紹189
10.2程序設計的思路190
10.3關鍵技術200
10.3.1圖形繪製——Tinker的Canvas組件200
10.3.2 Canvas上的圖形對象200
10.4程序設計的步驟210
第11章益智遊戲——推箱子遊戲215
11.1推箱子遊戲介紹215
11.2程序設計的思路216
11.3關鍵技術217
11.4程序設計的步驟218
第12章娛樂遊戲——兩人麻將游戲224
12.1麻將游戲介紹224
12.1.1麻將術語224
12.1.2牌數224
12.2兩人麻將游戲設計的思路225
12.2.1素材圖片225
12.2.2遊戲的邏輯實現226
12.2.3碰/吃牌的判斷226
12.2.4和牌算法227
12.2.5實現計算機智能出牌231
12.3關鍵技術233
12.3.1聲音的播放233
12.3.2返回對應位置的組件233
12.3. 3對保存麻將牌的列表排序234
12.4兩人麻將游戲設計的步驟235
12.4.1設計麻將牌類235
12.4.2設計遊戲主程序237
第13章網絡編程案例——基於TCP的在線聊天程序247
13.1基於TCP的在線聊天程序簡介247
13.2關鍵技術247
13.2.1互聯網TCP/IP協議247
13.2.2 IP協議和端口248
13.2.3 TCP協議和UDP協議249
13.2.4 Socket 249
13.2.5多線程編程254
13.3在線聊天程序設計的步驟256
13.3.1在線聊天程序的服務器端256
13.3.2在線聊天程序的客戶端259
第14章網絡通信案例——基於UDP的網絡五子棋
遊戲263
14.1網絡五子棋遊戲簡介263
14.2五子棋遊戲的設計思想264
14.3關鍵技術267
14.3.1 UDP編程267
14.3. 2自定義網絡五子棋遊戲的通信協議269
14.4網絡五子棋遊戲程序設計的步驟271
14.4.1服務器端程序設計的步驟271
14.4.2客戶端程序設計的步驟276
第15章益智遊戲——中國象棋281
15.1中國象棋介紹281
15.2關鍵技術282
15.3中國象棋的設計思路284
15.4中國象棋實現的步驟287
第16章娛樂遊戲——人物拼圖遊戲297
16.1人物拼圖遊戲介紹297
16.2程序設計的思路298
16.3關鍵技術298
16.3. 1複製和粘貼圖像區域298
16.3.2調整尺寸和旋轉298
16.3.3轉換成灰度圖像299
16.3.4對像素進行操作300
16.4程序設計的步驟300
16.4.1 Python處理圖片切割300
16.4.2遊戲的邏輯實現302
第17章基於Pygame的遊戲設計306
17.1 Pygame基礎知識306
17.1.1安裝Pygame庫306
17.1.2 Pygame的模塊306
17.2 Pygame的使用309
17.2.1 Pygame開發遊戲的主要流程309
17.2.2 Pygame的圖像/圖形繪製311
17.2.3 Pygame的鍵盤和鼠標事件的處理314
17.2.4 Pygame的字體使用319
17.2.5 Pygame的聲音播放320
17.2.6 Pygame的精靈使用321
17.3基於Pygame設計貪吃蛇遊戲326
17.4基於Pygame設計飛機大戰遊戲333
17.4.1遊戲角色333
17.4.2遊戲界面顯示336
17.4.3遊戲的邏輯實現338
第18章機器學習案例——基於樸素貝葉斯算法的
文本分類343
18.1文本分類功能介紹343
18.2程序設計的思路343
18.3關鍵技術344
18.3.1貝葉斯算法的理論基礎344
18.3.2樸素貝葉斯分類346
18.3.3使用Python進行文本分類348
18.4程序設計的步驟348
18.4.1收集訓練數據348
18.4.2準備數據349
18.4.3分析數據349
18.4.4訓練算法350
18.4.5測試算法並改進353
18.4.6使用算法進行文本分類354
18.5使用樸素貝葉斯分類算法過濾垃圾郵件355
18.5.1收集訓練數據355
18.5.2將文本文件解析為詞向量356
18.5.3使用樸素貝葉斯算法進行郵件分類357
18.5.4改進算法359
18.6使用Scikit-Learn庫進行文本分類360
18.6.1文本分類常用的類和函數360
18.6.2案例實現363
第19章深度學習案例——基於卷積神經網絡的
手寫體識別366
19.1手寫體識別案例需求366
19.2深度學習的概念及關鍵技術366
19.2.1神經網絡模型366
19.2.2深度學習之卷積神經網絡367
19.3 Python深度學習庫——Keras 372
19.3.1 Keras的安裝372
19.3.2 Keras的網絡層372
19.3.3用Keras構建神經網絡375
19.4程序設計的思路376
19.5程序設計的步驟377
19.5.1 MNIST數據集377
19.5.2手寫體識別案例實現378
19.5.3預測自己手寫圖像382
第20章詞云實戰——爬取豆瓣影評生成詞云383
20.1功能介紹383
20.2程序設計的思路384
20.3關鍵技術385
20.3.1安裝WordCloud 385
20.3.2使用WordCloud 385
20.4程序設計的步驟389
參考文獻397