Python 是一種面向?qū)ο蟮慕忉屝透呒壘幊陶Z言,是當前流行的編程語言之一。本書系統(tǒng)性地介紹Python 的基礎(chǔ)知識及利用 Python 進行項目開發(fā)的實踐。全書分兩部分,第一部分介紹 Python 的基礎(chǔ)語法、Python 自帶的兩個模塊及其使用方法,以及 Python 的矩陣計算包 NumPy 的使用方法等,在介紹基礎(chǔ)語法的同時強調(diào)利用 Python 進行編程時需要注意的編程規(guī)范;第二部分聚焦科學研究和工程實踐中比較前沿的方向,涵蓋繪圖、圖像處理、優(yōu)化計算、游戲開發(fā)、基于 Web 的系統(tǒng)開發(fā)、爬蟲、機器學習等方面的項目實踐,側(cè)重點是利用 Python 實現(xiàn)項目需求。
1.從下載安裝到基本操作,從編程語法到編程規(guī)范,從案例分析到代碼實現(xiàn),讓你學懂學透Python基礎(chǔ)知識。
2.9個項目實踐,聚焦科學研究和工程實踐中的前沿方向,涵蓋繪圖、圖像處理、優(yōu)化計算、游戲開發(fā)、基于Web的系統(tǒng)開發(fā)、爬蟲、機器學習等方面,幫你充分掌握開發(fā)技能。
3.配套資源豐富,提供教學PPT、操作視頻、程序源碼、彩圖文件和本書思維導圖,助你提高學習效率。
殷錫亮,副教授,工學博士,中國人工智能學會會員。參與黑龍江省自然科學基金項目一項,發(fā)表3篇SCI、2篇EI檢索論文,獲得國家發(fā)明專利三項。擁有6年通信行業(yè)上市企業(yè)研發(fā)經(jīng)驗和8年高校信息通信技術(shù)類專業(yè)教學經(jīng)驗。研究領(lǐng)域包括機器視覺、室內(nèi)定位、人工智能等。
劉陽,數(shù)據(jù)庫系統(tǒng)工程師,副教授,工程碩士。2006至今,就職于哈爾濱職業(yè)技術(shù)學院,主要講授數(shù)據(jù)庫管理及維護、Web綜合實戰(zhàn)、Python、動態(tài)語言編程等課程,擅長網(wǎng)站開發(fā)和建設,曾擔任第46屆世界技能大賽黑龍江省選拔賽“網(wǎng)站設計與開發(fā)”項目命題專家及裁判(2020年),第45屆世界技能大賽黑龍江省選拔賽“網(wǎng)站設計與開發(fā)”裁判(2018年),第七屆黑龍江省殘疾人技能大賽網(wǎng)頁制作賽項裁判(2018年)。
張勝揚,高級講師,就職于北京中軟國際教育科技股份有限公司,曾講授西北工業(yè)大學“Python網(wǎng)絡爬蟲認知實訓”課程,東北農(nóng)業(yè)大學“人工智能實訓”課程,北京聯(lián)通軟件研究院“Python基礎(chǔ)及數(shù)據(jù)采集”課程企業(yè)培訓,中國移動“機器學習算法”授課企業(yè)培訓,中海航“基于Django的微服務架構(gòu)”課程。研究方向包括大數(shù)據(jù)采集及數(shù)據(jù)分析、高等數(shù)學數(shù)據(jù)分析、機器學習數(shù)據(jù)分析、網(wǎng)站架構(gòu)、圖像識別等。
第 一部分 Python 基礎(chǔ)
第 1 章 Python 集成開發(fā)環(huán)境介紹 3
1.1 Python IDLE Shell 3
1.2 PyCharm 集成開發(fā)環(huán)境 4
第 2 章 通過 IDLE 學習基本的 Python操作 6
2.1 使用 Python IDLE 與計算機對話 6
2.2 計算機語言的精華:算法 7
2.3 計算器:數(shù)和計算表達式 8
2.4 變量:程序的最小單元 10
2.5 語句:程序的基本單元 11
2.6 獲取用戶輸入:人工智能程序的眼睛 11
2.7 函數(shù):功能 12
2.8 模塊:倉庫 13
2.9 字符串處理 14
2.10 Python 的可執(zhí)行程序 19
2.11 Python 的程序注釋 21
2.12 運行 Python 程序 22
2.13 小結(jié) 23
第3章 操作 Python 數(shù)據(jù)容器——序列和字典 25
3.1 序列 25
3.2 字典 34
3.3 小結(jié) 40
第 4 章 使用字符串 42
4.1 不可變的字符串 42
4.2 像 C 語言一樣設置字符串的格式 42
4.3 模板法 43
4.4 format 方法 43
4.5 字符串方法 45
4.6 小結(jié) 47
第 5 章 語句 48
5.1 賦值語句 48
5.2 條件語句 50
5.3 循環(huán)語句 53
5.3.1 while 循環(huán) 54
5.3.2 for 循環(huán) 55
5.3.3 迭代字典 56
5.3.4 使用 break 語句、continue 語句跳出循環(huán) 56
5.3.5 循環(huán)后的 else 子句 57
5.3.6 循環(huán)嵌套 58
5.4 其他語句 58
5.4.1 pass 語句 58
5.4.2 del 語句 59
5.4.3 exec 語句(Python 2) 60
5.4.4 def 語句與 return 語句 61
5.5 小結(jié) 61
第 6 章 函數(shù) 63
6.1 復用性與邏輯性 63
6.2 自定義函數(shù) 63
6.3 函數(shù)的參數(shù) 66
6.4 作用域 68
6.5 函數(shù)的遞歸 69
6.6 小結(jié) 69
第 7 章 面向?qū)ο缶幊? 70
7.1 對象 70
7.2 類 71
7.2.1 創(chuàng)建自定義類 71
7.2.2 類的名字空間 71
7.2.3 超類和繼承 72
7.2.4 封裝 73
7.3 小結(jié) 73
第 8 章 異常 75
8.1 異常定義 75
8.2 異常處理 75
8.2.1 raise 語句 75
8.2.2 自定義異常類 76
8.2.3 try-except 語句 76
8.2.4 finally 語句 78
8.3 if-else 語句與 try-except 語句的比較 79
8.4 告警 79
8.5 小結(jié) 80
第 9 章 特殊方法、特性、迭代器和生成器 81
9.1 構(gòu)造函數(shù) 81
9.2 特性 82
9.2.1 property 關(guān)鍵字與 property函數(shù) 82
9.2.2 靜態(tài)方法與類方法 84
9.2.3 __getattribute__、__getattr__、__setattr__、__dict__、__delattr__方法 86
9.3 迭代器 88
9.4 生成器 90
9.4.1 創(chuàng)建生成器 90
9.4.2 遞歸生成器 91
9.4.3 生成器的方法 92
9.5 小結(jié) 94
第 10 章 模塊 96
10.1 模塊的概念 96
10.2 模塊中的定義 99
10.3 常用的標準庫中的模塊 101
10.3.1 time 101
10.3.2 random 103
10.3.3 sys 106
10.3.4 os 108
10.3.5 其他模塊 113
10.4 小結(jié) 114
第 11 章 文件操作 115
11.1 打開文件 115
11.2 文件的基本操作 116
11.3 使用 fileinput 模塊迭代文件 118
11.4 文件上下文管理器 120
11.5 小結(jié) 121
第 12 章 數(shù)據(jù)庫操作 122
12.1 數(shù)據(jù)庫的 Python 接口 122
12.2 對 SQLite 數(shù)據(jù)庫的基本操作 123
12.2.1 創(chuàng)建數(shù)據(jù)庫連接和關(guān)閉數(shù)據(jù)庫連接 123
12.2.2 執(zhí)行 SQL 語句 124
12.2.3 sqlite3 備份 129
12.3 小結(jié) 131
第 13 章 基于 NumPy 的線性代數(shù) 運算 132
13.1 下載并安裝 NumPy 132
13.2 基礎(chǔ)概念 133
13.2.1 數(shù)組的屬性 133
13.2.2 生成 NumPy 數(shù)組 134
13.2.3 輸出數(shù)組 136
13.2.4 數(shù)組基本運算 137
13.2.5 通用函數(shù) 138
13.2.6 索引、切片和迭代 138
13.3 數(shù)組變換 140
13.3.1 改變數(shù)組的形狀 140
13.3.2 數(shù)組間的堆疊 141
13.3.3 數(shù)組切割 142
13.4 矩陣運算 142
13.5 小結(jié) 144
第二部分 Python 項目實踐
第 14 章 使用 Matplotlib 繪圖 147
14.1 下載并安裝 Matplotlib、
SciPy 147
14.2 繪制簡單 2D 圖像 148
14.3 繪制復雜 2D 圖像 155
14.4 繪制 3D 圖像 159
14.5 小結(jié) 160
第 15 章 使用 OpenCV 處理圖像——圖像特征提取及匹配 161
15.1 下載并安裝 opencv-python、opencv-contrib-python 和pyflann 161
15.2 圖像特征提取 162
15.3 圖像特征匹配 164
15.4 小結(jié) 169
第 16 章 使用 cvxpy 和 cvxopt 求解凸優(yōu)化問題 170
16.1 下載并安裝 cvxpy 和 cvxopt 170
16.2 求解線性規(guī)劃問題 171
16.3 求解 L1 范數(shù)逼近問題 174
16.4 求解二次規(guī)劃問題 175
16.5 小結(jié) 177
第 17 章 使用 Pygame 實現(xiàn)外星人入侵游戲 178
17.1 下載并安裝 Pygame 178
17.2 Pygame 的使用方法 180
17.3 外星人入侵游戲項目設計與開發(fā) 200
17.3.1 游戲的初始設置 200
17.3.2 創(chuàng)建玩家飛船類 Ship 201
17.3.3 創(chuàng)建子彈類 Bullet 202
17.3.4 創(chuàng)建外星人飛船類 Alien 203
17.3.5 創(chuàng)建游戲統(tǒng)計信息類GameStates 204
17.3.6 創(chuàng)建按鈕類 Button 204
17.3.7 創(chuàng)建游戲功能函數(shù) 205
17.3.8 創(chuàng)建游戲入口 209
17.4 小結(jié) 210
第 18 章 使用 Django 框架快速創(chuàng)建用戶信息管理系統(tǒng) 211
18.1 Django 框架簡介與環(huán)境部署 211
18.2 Django 框架的基本使用方法 212
18.2.1 創(chuàng)建一個 Django 項目 212
18.2.2 Django 框架的基本配置 212
18.2.3 創(chuàng)建 Django 應用 215
18.2.4 定義視圖 215
18.3 基于 Django 和 MySQL 創(chuàng)建一個用戶信息管理系統(tǒng) 216
18.3.1 創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表 216
18.3.2 創(chuàng)建項目和應用 216
18.3.3 添加 demo 項目的數(shù)據(jù)庫連接配置和基本配置 217
18.3.4 定義模型 218
18.3.5 實現(xiàn) Web 端訪問 219
18.3.6 編輯模板文件 220
18.3.7 設置視圖 223
18.3.8 測試 224
18.4 小結(jié) 226
第 19 章 網(wǎng)絡爬蟲基礎(chǔ) 227
19.1 網(wǎng)絡爬蟲技術(shù)基礎(chǔ) 227
19.2 爬蟲環(huán)境搭建 228
19.3 源碼采集 230
19.3.1 使用 urllib 采集源碼 230
19.3.2 使用 Requests 采集源碼 232
19.3.3 使用 Selenium 采集源碼 233
19.4 數(shù)據(jù)解析 234
19.4.1 使用 bs4 解析數(shù)據(jù) 234
19.4.2 使用 lxml 解析數(shù)據(jù) 238
19.5 小結(jié) 239
第 20 章 天氣預測 241
20.1 下載并安裝 sklearn 241
20.2 天氣預測問題 243
20.3 回歸模型 244
20.3.1 線性回歸 244
20.3.2 決策樹回歸 251
20.3.3 隨機森林回歸 255
20.3.4 神經(jīng)網(wǎng)絡回歸 257
20.4 小結(jié) 260
第 21 章 紅酒產(chǎn)地分類 261
21.1 數(shù)據(jù)集 261
21.2 分類器評價指標 263
21.3 分類器 265
21.3.1 支持向量機 265
21.3.2 最近鄰 268
21.3.3 樸素貝葉斯 271
21.3.4 投票分類器 273
21.4 小結(jié) 275
第 22 章 銀行客戶分析 276
22.1 數(shù)據(jù)集 276
22.2 聚類模型評估指標 278
22.2.1 蘭德指數(shù) 278
22.2.2 互信息評分 279
22.2.3 同質(zhì)性、完整性及 V 測度 280
22.2.4 FM 指數(shù) 281
22.2.5 輪廓系數(shù) 281
22.2.6 CH 指數(shù) 282
22.2.7 DB 指數(shù) 282
22.3 聚類模型 282
22.3.1 K 均值聚類 282
22.3.2 DBSCAN 聚類 287
22.3.3 譜聚類 289
22.3.4 層次聚類 290
22.4 小結(jié) 293
附錄 1 部分X11/CSS4 顏色代碼目錄 294
附錄 2 互信息評分計算示例 296
附錄 3 同質(zhì)性、完整性及 V 測度數(shù)值計算示例 298
參考資料 300