《案例學(xué)Python(進(jìn)階篇)》循序漸進(jìn)地講解了使用Python語(yǔ)言開(kāi)發(fā)常見(jiàn)項(xiàng)目程序的知識(shí),通過(guò)典型的項(xiàng)目實(shí)例講解了Python在實(shí)踐中的具體用法。本書(shū)共分16章,內(nèi)容包括初級(jí)游戲項(xiàng)目實(shí)戰(zhàn)、Web網(wǎng)站開(kāi)發(fā)實(shí)戰(zhàn)、數(shù)據(jù)可視化分析實(shí)戰(zhàn)、網(wǎng)絡(luò)爬蟲(chóng)實(shí)戰(zhàn)、GUI桌面開(kāi)發(fā)實(shí)戰(zhàn)、多媒體應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)、游戲項(xiàng)目開(kāi)發(fā)實(shí)戰(zhàn)、辦公文件處理實(shí)戰(zhàn)、網(wǎng)絡(luò)應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)、圖像視覺(jué)處理實(shí)戰(zhàn)、機(jī)器學(xué)習(xí)實(shí)戰(zhàn)、AI智能問(wèn)答系統(tǒng)、姿勢(shì)預(yù)測(cè)器、大型RPG類(lèi)游戲仿《暗黑破壞神》、圖書(shū)商城系統(tǒng)、財(cái)經(jīng)數(shù)據(jù)可視化分析系統(tǒng)。
《案例學(xué)Python(進(jìn)階篇)》中的項(xiàng)目經(jīng)典而全面,幾乎涵蓋了Python語(yǔ)言所有可以實(shí)現(xiàn)的項(xiàng)目,不但適合初學(xué)Python的人員閱讀,也適合計(jì)算機(jī)相關(guān)專(zhuān)業(yè)的師生閱讀,而且還可供有經(jīng)驗(yàn)的開(kāi)發(fā)人員查閱和參考。
《案例學(xué)Python(進(jìn)階篇)》通過(guò)典型的項(xiàng)目案例詳細(xì)講解了Python在實(shí)踐中的具體用法,案例涵蓋了Python語(yǔ)言應(yīng)用的大部分領(lǐng)域,主要包括游戲開(kāi)發(fā)、Web網(wǎng)站開(kāi)發(fā)、數(shù)據(jù)可視化開(kāi)發(fā)、網(wǎng)絡(luò)爬蟲(chóng)開(kāi)發(fā)、GUI桌面開(kāi)發(fā)、多媒體開(kāi)發(fā)、辦公自動(dòng)化開(kāi)發(fā)、圖像視覺(jué)開(kāi)發(fā)、機(jī)器學(xué)習(xí)開(kāi)發(fā)、深度學(xué)習(xí)開(kāi)發(fā)等。
隨著人工智能和大數(shù)據(jù)的蓬勃發(fā)展,Python將會(huì)得到越來(lái)越多開(kāi)發(fā)者的喜愛(ài)和應(yīng)用。因?yàn)镻ython語(yǔ)法簡(jiǎn)單,學(xué)習(xí)速度快,大家可以用更短的時(shí)間掌握這門(mén)語(yǔ)言。因此,身邊有很多朋友都開(kāi)始使用Python語(yǔ)言進(jìn)行開(kāi)發(fā)。正是因?yàn)镻ython是一門(mén)如此受歡迎的編程語(yǔ)言,所以筆者精心編寫(xiě)了本書(shū),希望讓更多的人掌握這門(mén)優(yōu)秀的編程語(yǔ)言。2023年初,ChatGPT 4震驚全世界,其應(yīng)用端建議使用Python語(yǔ)言進(jìn)行開(kāi)發(fā),Python語(yǔ)言的應(yīng)用領(lǐng)域?qū)?huì)越來(lái)越廣。
本書(shū)特色
(1) 案例多而全面
書(shū)中案例豐富,幾乎涵蓋了Python語(yǔ)言開(kāi)發(fā)的大部分領(lǐng)域,如:游戲開(kāi)發(fā)、Web網(wǎng)站開(kāi)發(fā)、數(shù)據(jù)可視化、網(wǎng)絡(luò)爬蟲(chóng)、辦公自動(dòng)化、GUI桌面開(kāi)發(fā)、多媒體應(yīng)用、圖像視覺(jué)、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)等。
(2) 案例經(jīng)典,講解細(xì)致
本書(shū)中的項(xiàng)目案例個(gè)個(gè)經(jīng)典,詳細(xì)講解了每個(gè)案例的實(shí)現(xiàn)過(guò)程,讓讀者能夠看懂并掌握每一個(gè)知識(shí)點(diǎn)。
(3) 提供在線技術(shù)支持,解決自學(xué)者的痛點(diǎn)
對(duì)于自學(xué)編程的人來(lái)說(shuō),最大的痛點(diǎn)是遇到問(wèn)題時(shí)無(wú)人可問(wèn)。在購(gòu)買(mǎi)本書(shū)后,讀者將會(huì)獲取本書(shū)創(chuàng)作團(tuán)隊(duì)的技術(shù)支持,可以在線獲得一對(duì)一輔導(dǎo)服務(wù),快速解答您在學(xué)習(xí)中遇到的問(wèn)題。此外,我們還會(huì)定期進(jìn)行視頻授課,讓您切身體會(huì)到和眾多志同道合的朋友們一起學(xué)習(xí)編程是一件快樂(lè)的事情。
(4) 配套資源豐富,包含視頻、PPT、源代碼
書(shū)中每一章均提供了網(wǎng)絡(luò)視頻教學(xué),這些視頻能夠幫助初學(xué)者快速入門(mén),增強(qiáng)學(xué)習(xí)的信心,從而快速理解所學(xué)知識(shí)。讀者可通過(guò)掃描每章二級(jí)標(biāo)題下的二維碼,獲取案例視頻資源,既可在線觀看也可以下載到本地學(xué)習(xí)。此外,本書(shū)的配套學(xué)習(xí)資源中還提供了全書(shū)案例的源代碼,案例源代碼讀者可通過(guò)掃描下方的二維碼獲取。
本書(shū)讀者對(duì)象
初學(xué)編程的自學(xué)者 ? 編程愛(ài)好者
大、中專(zhuān)院校的教師和學(xué)生 ? 相關(guān)培訓(xùn)機(jī)構(gòu)的教師和學(xué)員
畢業(yè)設(shè)計(jì)的學(xué)生 初級(jí)和中級(jí)程序開(kāi)發(fā)人員
軟件測(cè)試人員
致謝
在寫(xiě)作本書(shū)的過(guò)程中得到了家人和朋友的鼓勵(lì),十分感謝他們給予我的巨大支持。從開(kāi)始寫(xiě)作到最終出版,得到了清華大學(xué)出版社編輯的支持和輔導(dǎo),正是在各位編輯的辛苦努力下才使得本書(shū)能夠出版。本人水平畢竟有限,書(shū)中難免存在疏漏之處,誠(chéng)請(qǐng)讀者提出意見(jiàn)或建議,以便修訂并使之更臻完善。最后感謝讀者購(gòu)買(mǎi)本書(shū),希望本書(shū)能成為讀者編程路上的領(lǐng)航者,祝讀者閱讀快樂(lè)!
編 者
張學(xué)建,中國(guó)海洋大學(xué)計(jì)算機(jī)博士,資深軟件開(kāi)發(fā)工程師和架構(gòu)師,現(xiàn)在就職于北京百度研發(fā)中心,從事百度自動(dòng)駕駛系統(tǒng)的架構(gòu)和開(kāi)發(fā)工作。曾經(jīng)在谷歌市場(chǎng)中發(fā)布過(guò)多款著名的應(yīng)用軟件,這些應(yīng)用軟件在谷歌市場(chǎng)上取得了驕人的銷(xiāo)售戰(zhàn)績(jī)。 另外,還精通C#、Java、C 和C語(yǔ)言等主流編程語(yǔ)言。業(yè)余期間,曾經(jīng)在國(guó)內(nèi)主流期刊中發(fā)表過(guò)多篇通信領(lǐng)域的著名論文。
第1章 初級(jí)游戲項(xiàng)目實(shí)戰(zhàn) 1
1.1 猜數(shù)游戲 2
1.1.1 使用條件語(yǔ)句 2
1.1.2 使用for循環(huán)語(yǔ)句 2
1.1.3 具體實(shí)現(xiàn) 3
1.2 龍的世界 4
1.2.1 使用while循環(huán)語(yǔ)句 4
1.2.2 使用函數(shù) 5
1.2.3 實(shí)現(xiàn)《龍的世界》游戲 6
1.3 黑白棋游戲 7
1.3.1 笛卡爾坐標(biāo)系 7
1.3.2 實(shí)例介紹 9
1.3.3 具體實(shí)現(xiàn) 9
1.4 益智類(lèi)游戲:俄羅斯方塊 15
1.4.1 規(guī)劃需要的圖形 15
1.4.2 具體實(shí)現(xiàn) 15
第2章 Web網(wǎng)站開(kāi)發(fā)實(shí)戰(zhàn) 23
2.1 會(huì)員登錄驗(yàn)證系統(tǒng) 24
2.1.1 簡(jiǎn)易用戶(hù)登錄驗(yàn)證系統(tǒng) 24
2.1.2 使用模塊auth實(shí)現(xiàn)登錄驗(yàn)證系統(tǒng) 27
2.1.3 使用百度賬戶(hù)實(shí)現(xiàn)用戶(hù)登錄系統(tǒng) 32
2.2 博客發(fā)布系統(tǒng) 37
2.2.1 系統(tǒng)設(shè)置 37
2.2.2 會(huì)員注冊(cè)和登錄驗(yàn)證模塊 38
2.2.3 博客發(fā)布模塊 42
第3章 數(shù)據(jù)可視化分析實(shí)戰(zhàn) 45
3.1 可視化分析SQLite中的數(shù)據(jù) 46
3.1.1 創(chuàng)建數(shù)據(jù)庫(kù) 46
3.1.2 繪制統(tǒng)計(jì)圖 47
3.2 可視化統(tǒng)計(jì)顯示某網(wǎng)店各類(lèi)口罩的銷(xiāo)量 49
3.2.1 準(zhǔn)備CSV文件 49
3.2.2 可視化CSV文件中的數(shù)據(jù) 50
3.3 數(shù)據(jù)挖掘:可視化處理文本情感分析數(shù)據(jù) 51
3.3.1 準(zhǔn)備CSV文件 51
3.3.2 可視化兩個(gè)劇本的情感分析數(shù)據(jù) 52
3.4 使用熱力圖可視化展示某城市的房?jī)r(jià)信息 55
3.4.1 準(zhǔn)備數(shù)據(jù) 56
3.4.2 使用熱力圖可視化展示信息 56
3.5 Scikit-Learn聚類(lèi)分析并可視化處理 59
3.5.1 準(zhǔn)備餅狀圖 59
3.5.2 聚類(lèi)處理 59
3.5.3 生成統(tǒng)計(jì)柱狀圖 60
3.6 將Excel文件中的地址信息可視化為交通熱力圖 61
3.6.1 將地址轉(zhuǎn)換為JS格式 61
3.6.2 將JS地址轉(zhuǎn)換為坐標(biāo) 62
3.6.3 在地圖中顯示地址的熱力信息 64
第4章 網(wǎng)絡(luò)爬蟲(chóng)實(shí)戰(zhàn) 65
4.1 繪制比特幣和以太幣的價(jià)格走勢(shì)圖 66
4.1.1 抓取數(shù)據(jù) 66
4.1.2 繪制BTC/美元價(jià)格曲線 66
4.1.3 繪制BTC和ETH的歷史價(jià)格曲線圖 67
4.2 熱門(mén)電影信息數(shù)據(jù)可視化 68
4.2.1 創(chuàng)建MySQL數(shù)據(jù)庫(kù) 69
4.2.2 抓取并分析電影數(shù)據(jù) 71
4.3 桌面壁紙抓取系統(tǒng) 74
4.3.1 創(chuàng)建項(xiàng)目 74
4.3.2 系統(tǒng)設(shè)置 74
4.3.3 創(chuàng)建數(shù)據(jù)庫(kù) 74
4.3.4 聲明需要格式化的字段 77
4.3.5 實(shí)現(xiàn)保存功能的類(lèi) 77
4.3.6 實(shí)現(xiàn)具體的爬蟲(chóng) 79
第5章 GUI桌面開(kāi)發(fā)實(shí)戰(zhàn) 83
5.1 創(chuàng)建一個(gè)英尺/米轉(zhuǎn)換器 84
5.1.1 具體實(shí)現(xiàn) 84
5.1.2 代碼解析 85
5.2 制作一個(gè)交通標(biāo)記指示牌 86
5.2.1 實(shí)例介紹 86
5.2.2 具體實(shí)現(xiàn) 86
5.3 GUI版的Minecraft游戲 88
5.3.1 項(xiàng)目規(guī)劃 88
5.3.2 具體實(shí)現(xiàn) 89
5.4 圖書(shū)管理系統(tǒng) 95
5.4.1 數(shù)據(jù)庫(kù)操作 95
5.4.2 GUI實(shí)現(xiàn) 96
第6章 多媒體應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn) 99
6.1 簡(jiǎn)易播放器 100
6.1.1 使用模塊audioop播放指定的音樂(lè) 100
6.1.2 使用模塊wave讀取和寫(xiě)入WAV文件 102
6.2 三款音樂(lè)播放器 103
6.2.1 基于模塊tkinter開(kāi)發(fā)的音樂(lè)播放器 103
6.2.2 開(kāi)發(fā)網(wǎng)易云音樂(lè)播放器 105
6.2.3 開(kāi)發(fā)一個(gè)MP3播放器 109
6.3 多媒體剪輯 114
6.3.1 MP3文件編輯器 114
6.3.2 批量設(shè)置視頻文件的封面圖片 121
第7章 游戲項(xiàng)目開(kāi)發(fā)實(shí)戰(zhàn) 129
7.1 貪吃蛇游戲 130
7.1.1 普通版的貪吃蛇游戲 130
7.1.2 AI版的貪吃蛇游戲 134
7.1.3 Cocos2d-Python版本的貪吃蛇游戲 138
7.2 使用Panda3D開(kāi)發(fā)3D游戲 142
7.2.1 迷宮中的小球游戲 142
7.2.2 飛船大作戰(zhàn)游戲 146
第8章 辦公文件處理實(shí)戰(zhàn) 149
8.1 處理Office文件 150
8.1.1 使用模塊openpyxl讀取Excel文件 150
8.1.2 在指定Excel文件中檢索某關(guān)鍵字 152
8.1.3 將數(shù)據(jù)導(dǎo)入Excel文件并生成圖表 153
8.1.4 獲取Excel文件中的數(shù)據(jù)信息 154
8.1.5 將數(shù)據(jù)分別導(dǎo)入到Excel文件和SQLite數(shù)據(jù)庫(kù) 156
8.1.6 創(chuàng)建一個(gè)Word文檔 157
8.1.7 向Word文檔中插入指定樣式的段落 157
8.1.8 獲取Word文檔中的文本樣式名稱(chēng)和每個(gè)樣式的文字?jǐn)?shù)目 159
8.1.9 獲取Word文檔中表格的內(nèi)容 159
8.1.10 創(chuàng)建Word表格并合并 里面的單元格 160
8.1.11 自定義Word文件的樣式 161
8.1.12 設(shè)置Excel表格的樣式 162
8.1.13 向Excel文件中插入圖像 164
8.1.14 向Excel文件中插入數(shù)據(jù) 并繪制柱狀圖 165
8.1.15 向Excel文件中插入數(shù)據(jù) 并繪制散點(diǎn)圖 167
8.1.16 向Excel文件中插入數(shù)據(jù) 并繪制柱狀圖和餅狀圖 168
8.2 PDF文件處理實(shí)戰(zhàn) 170
8.2.1 將PDF文件中的內(nèi)容轉(zhuǎn)換為T(mén)EXT文本 171
8.2.2 解析某個(gè)在線PDF文件的內(nèi)容 173
8.2.3 將兩個(gè)PDF文件合并為一個(gè)PDF文件 176
8.2.4 分別在PDF文件和PNG文件中繪制餅狀圖 177
8.2.5 在PDF文件中分別生成條形圖和二維碼 178
第9章 網(wǎng)絡(luò)應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn) 181
9.1 收發(fā)電子郵件 182
9.1.1 獲取郵箱中最新兩封郵件的主題和發(fā)件人 182
9.1.2 向指定郵箱發(fā)送郵件 183
9.1.3 發(fā)送帶附件功能的郵件 184
9.1.4 Web版郵件發(fā)送系統(tǒng) 185
9.2 網(wǎng)頁(yè)計(jì)數(shù)器 187
9.2.1 使用數(shù)據(jù)庫(kù)保存統(tǒng)計(jì)數(shù)據(jù) 187
9.2.2 使用第三方庫(kù)實(shí)現(xiàn)訪問(wèn)計(jì)數(shù)器 190
9.3 Ajax上傳和下載系統(tǒng) 195
9.3.1 實(shí)現(xiàn)文件上傳功能 195
9.3.2 實(shí)現(xiàn)文件下載功能 200
第10章 圖像視覺(jué)處理實(shí)戰(zhàn) 203
10.1 智能車(chē)牌識(shí)別系統(tǒng) 204
10.1.1 系統(tǒng)介紹 204
10.1.2 通用程序 204
10.1.3 主程序 208
10.2 人臉檢測(cè)系統(tǒng) 210
10.2.1 檢測(cè)人臉眼睛的狀態(tài) 210
10.2.2 模糊處理人臉 211
10.2.3 檢測(cè)兩張臉是否匹配 213
10.2.4 識(shí)別視頻中的人臉 214
10.2.5 網(wǎng)頁(yè)版人臉識(shí)別器 216
10.3 Scikit-Learn和人臉識(shí)別 217
10.3.1 SVM算法人臉識(shí)別 217
10.3.2 KNN算法人臉識(shí)別 218
第11章 機(jī)器學(xué)習(xí)實(shí)戰(zhàn) 223
11.1 汽車(chē)油耗預(yù)測(cè)實(shí)戰(zhàn)(使用神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)分類(lèi)) 224
11.1.1 準(zhǔn)備數(shù)據(jù) 224
11.1.2 創(chuàng)建網(wǎng)絡(luò)模型 227
11.1.3 訓(xùn)練和測(cè)試模型 228
11.2 圖像分類(lèi)器 230
11.2.1 準(zhǔn)備數(shù)據(jù)集 230
11.2.2 創(chuàng)建數(shù)據(jù)集 231
11.2.3 配置數(shù)據(jù)集 233
11.2.4 創(chuàng)建模型 234
11.2.5 編譯模型 234
11.2.6 訓(xùn)練模型 235
11.2.7 可視化訓(xùn)練結(jié)果 235
11.2.8 過(guò)擬合處理:數(shù)據(jù)增強(qiáng) 236
11.2.9 過(guò)擬合處理:將Dropout引入網(wǎng)絡(luò) 237
11.2.10 重新編譯和訓(xùn)練模型 238
11.2.11 預(yù)測(cè)新數(shù)據(jù) 241
11.3 智能翻譯系統(tǒng) 242
11.3.1 下載和準(zhǔn)備數(shù)據(jù)集 242
11.3.2 創(chuàng)建數(shù)據(jù)集 245
11.3.3 編寫(xiě)編碼器(encoder)和解碼器(decoder)模型 246
11.3.4 訓(xùn)練 249
11.3.5 翻譯 252
第12章 綜合實(shí)戰(zhàn):AI智能問(wèn)答系統(tǒng) 255
12.1 技術(shù)架構(gòu)介紹 256
12.1.1 TensorFlow.js 256
12.1.2 SQuAD 2.0 259
12.1.3 BERT 260
12.1.4 知識(shí)蒸餾 260
12.2 具體實(shí)現(xiàn) 263
12.2.1 編寫(xiě)HTML文件 263
12.2.2 腳本處理 264
12.2.3 加載訓(xùn)練模型 264
12.2.4 查詢(xún)處理 264
12.2.5 文章處理 266
12.2.6 加載處理 266
12.2.7 尋找答案 267
12.2.8 提取最佳答案 268
12.2.9 將答案轉(zhuǎn)換為文本 269
12.3 運(yùn)行調(diào)試 270
第13章 綜合實(shí)戰(zhàn):姿勢(shì)預(yù)測(cè)器 273
13.1 系統(tǒng)介紹 274
13.2 準(zhǔn)備模型 274
13.2.1 身體部位監(jiān)測(cè)點(diǎn)說(shuō)明 275
13.2.2 導(dǎo)入TensorFlow Lite模型 275
13.3 Android姿勢(shì)預(yù)測(cè)器 276
13.3.1 準(zhǔn)備工作 276
13.3.2 頁(yè)面布局 278
13.3.3 實(shí)現(xiàn)主Activity 278
13.3.4 圖像處理 280
13.3.5 姿勢(shì)識(shí)別 282
第14章 綜合實(shí)戰(zhàn):大型RPG游戲仿《暗黑破壞神》 285
14.1 RPG和《暗黑破壞神》介紹 286
14.1.1 RPG簡(jiǎn)介 286
14.1.2 《暗黑破壞神》系列游戲簡(jiǎn)介 286
14.2 項(xiàng)目介紹 287
14.2.1 游戲特色 287
14.2.2 模塊劃分 288
14.3 數(shù)據(jù)模塊 288
14.3.1 Item數(shù)據(jù) 289
14.3.2 Enemy數(shù)據(jù) 290
14.3.3 Attack數(shù)據(jù) 291
14.3.4 Skill數(shù)據(jù) 291
14.3.5 玩家處理 292
14.4 系統(tǒng)主程序 297
第15章 綜合實(shí)戰(zhàn):圖書(shū)商城系統(tǒng) 305
15.1 功能需求分析 306
15.2 準(zhǔn)備工作 307
15.2.1 用到的庫(kù) 307
15.2.2 準(zhǔn)備Vue環(huán)境 308
15.2.3 創(chuàng)建應(yīng)用 308
15.2.4 系統(tǒng)配置 309
15.3 設(shè)計(jì)數(shù)據(jù)庫(kù) 312
15.3.1 為users應(yīng)用創(chuàng)建Model 模型 312
15.3.2 為goods應(yīng)用創(chuàng)建Model 模型 314
15.3.3 為trade應(yīng)用創(chuàng)建Model 模型 318
15.3.4 為user_operation應(yīng)用創(chuàng)建Model模型 320
15.3.5 生成數(shù)據(jù)庫(kù)表 322
15.4 使用Restful API 322
15.4.1 商品列表序列化 323
15.4.2 在前端展示左側(cè)分類(lèi)、排序、商品列表和分頁(yè) 330
15.5 登錄認(rèn)證 332
15.5.1 使用DRF Token認(rèn)證 332
15.5.2 使用JWT認(rèn)證 334
15.5.3 微博賬戶(hù)登錄 337
15.5.4 social-app-django集成第三方登錄 341
15.6 支付寶支付 344
15.6.1 配置支付寶的沙箱環(huán)境 344
15.6.2 編寫(xiě)程序 347
15.7 測(cè)試程序 355
第16章 綜合實(shí)戰(zhàn):財(cái)經(jīng)數(shù)據(jù)可視化分析系統(tǒng) 359
16.1 爬取股票實(shí)時(shí)漲幅榜信息 360
16.1.1 準(zhǔn)備Selenium環(huán)境 360
16.1.2 爬取數(shù)據(jù) 360
16.1.3 獲取指定股票所屬行業(yè) 信息 362
16.1.4 獲取漲幅榜和跌幅榜信息 362
16.1.5 保存漲幅榜前10名和跌幅榜 前10名股票數(shù)據(jù)到Excel文件 364
16.2 AI選股系統(tǒng) 366
16.2.1 準(zhǔn)備TuShare 366
16.2.2 跟蹤熱點(diǎn)板塊 366
16.2.3 數(shù)據(jù)建模和評(píng)估分析 378