內容簡介
本書從零基礎讀者的角度出發,通過通俗易懂的語言、豐富多彩的實例,循序漸進地讓讀者在實踐中學習Python編程知識,並提升自己的實際開發能力。 全書共分為4篇21章,內容包括開啟Python之旅、變數與基本數據類型、與計算機交流、運算符與表達式、 程式的控制結構、序列的通用操作、列表(list)、元組(tuple)、字元串的常用操作、正則表達式操作、字典與集合、函式、模組和包、面向對象與類、檔案I/O、異常處理與程式調試、海龜繪圖、GUI設計之PyQt5、網路爬蟲開發、小海龜挑戰大迷宮、AI圖像識別助手等。書中知識點講解細緻,側重介紹每個知識點的使用場景,涉及的代碼給出了詳細的注釋,可以使讀者輕鬆領會Python程式開發的精髓,快速提高開發技能。同時,本書配套了大量教學視頻,掃碼即可觀看,還提供所有程式源檔案,方便讀者實踐。 本書適合人工智慧、網路爬蟲工程師及Python初學者等自學使用,也可用作高等院校相關專業的教材及參考書。
目錄
第1篇 基礎篇
第1章 開啟Python之旅 2 視頻講解:6節,78分鐘
1.1 Python概述 3
1.1.1 Python簡介 3
1.1.2 Python的版本 3
1.1.3 Python的套用領域 3
1.2 搭建Python開發環境 4
1.2.1 在Windows作業系統上安裝Python 4
1.2.2 在Linux作業系統上安裝Python 9
1.2.3 在Mac OS作業系統中安裝Python 10
1.3 常見問題的分析與解決 13
1.3.1 解決提示“python不是內部或外部命令……”的問題 13
1.3.2 我的Python安裝到哪了? 15
1.3.3 為什麼出現2502/2503錯誤 17
1.4 第一個Python程式 17
1.4.1 在IDLE中編寫“Hello World” 17
1.4.2 運行Python程式 19
1.4.3 常見問題的分析與解決 20
1.5 使用第三方開發工具PyCharm 20
1.5.1 PyCharm的下載與安裝 20
1.5.2 運行PyCharm 22
1.5.3 創建工程目錄 23
1.5.4 編寫“Hello World”程式 24
本章知識思維導圖 26
第2章 變數與基本數據類型 27 視頻講解:6節,70分鐘
2.1 保留字與標識符 28
2.1.1 保留字 28
2.1.2 標識符 29
2.2 變數 30
2.2.1 什麼是變數 30
2.2.2 定義與使用變數 30
2.3 基本數據類型 31
2.3.1 數字類型 31
【實例2.1】 根據身高、體重計算BMI指數 32
2.3.2 字元串類型 33
2.3.3 布爾類型 34
2.3.4 數據類型轉換 34
【實例2.2】 模擬超市抹零結賬行為 35
本章知識思維導圖 36
第3章 與計算機交流 37 視頻講解:5節,65分鐘
3.1 注釋 38
3.1.1 單行注釋 38
3.1.2 多行注釋 39
3.1.3 檔案編碼聲明注釋 40
3.2 代碼縮進 40
3.3 編碼規範 42
3.3.1 編寫規則 42
3.3.2 命名規範 43
3.4 輸入與輸出 44
3.4.1 使用print( )函式輸出 44
【實例3.1】 輸出中英文版的賈伯斯語錄 45
3.4.2 使用input( )函式輸入 46
【實例3.2】 輸入用戶名和密碼並輸出 46
本章知識思維導圖 47
第4章 運算符與表達式 48 視頻講解:6節,58分鐘
4.1 算術運算符 49
【實例4.1】 計算學生成績的分差及平均分 50
4.2 賦值運算符 50
4.2.1 簡單的賦值運算 51
【實例4.2】 定義不同類型值的變數 51
4.2.2 複合賦值運算 51
【實例4.3】 複合賦值運算符的示例 52
4.2.3 多重賦值 52
4.3 比較(關係)運算符 53
【實例4.4】 使用比較運算符比較大小關係 54
4.4 邏輯運算符 54
【實例4.5】 參加手機店的打折活動 55
4.5 位運算符 56
4.5.1 “位與”運算 56
4.5.2 “位或”運算 56
4.5.3 “位異或”運算 56
4.5.4 “位取反”運算 57
4.5.5 左移位運算符<< 57
4.5.6 右移位運算符>> 57
4.6 賦值表達式 58
【實例4.6】 模擬用戶註冊時驗證輸入是否合法 58
4.7 運算符的優先權 59
本章知識思維導圖 60
第5章 程式的控制結構 61 視頻講解:12節,112分鐘
5.1 程式的基本結構 62
5.2 分支語句 62
5.2.1 最簡單的if語句 63
【實例5.1】 根據BMI指數判斷身材是否合理 63
5.2.2 if…else語句 64
【實例5.2】 模擬某大學畢業生在創業路上遇到困難時所做的選擇 65
5.2.3 if…elif…else語句 66
【實例5.3】 輸出玫瑰花語 67
5.2.4 if語句的嵌套 68
【實例5.4】 判斷是否為酒後駕車 68
5.3 條件表達式 69
【實例5.5】 計算心理諮詢師的費用 70
5.4 循環語句 70
5.4.1 while語句 70
【實例5.6】 助力瑛姑 ①:while循環版解題法 71
5.4.2 for語句 72
【實例5.7】 助力瑛姑 ②:for循環版解題法 73
5.4.3 循環嵌套 74
【實例5.8】 列印九九乘法表 75
5.5 跳轉語句 75
5.5.1 break語句 76
【實例5.9】 助力瑛姑 ③:for循環改進版解題法 77
5.5.2 continue語句 77
【實例5.10】 逢七拍腿遊戲 78
5.6 pass空語句 79
本章知識思維導圖 79
第6章 序列的通用操作 80 視頻講解:7節,38分鐘
6.1 什麼是序列 81
6.2 索引(Indexing) 81
6.3 切片(Slicing) 82
【實例6.1】 找出藏頭詩的詩頭 82
6.4 序列加法(Adding) 83
6.5 序列乘法(Multiplying) 83
6.6 檢查某個元素是否是序列的成員(元素) 84
【實例6.2】 驗證用戶名是否被占用 85
6.7 計算序列的長度、最大值和最小值 85
6.7.1 計算序列的長度 85
6.7.2 獲取序列中的最大值 86
6.7.3 獲取序列中的最小值 88
本章知識思維導圖 89
第7章 列表(list) 90 視頻講解:7節,90分鐘
7.1 列表的創建和刪除 91
7.1.1 使用賦值運算符直接創建列表 91
7.1.2 創建空列表 91
7.1.3 創建數值列表 91
7.1.4 刪除列表 92
7.2 訪問列表元素 92
【實例7.1】 輸出勵志文字 93
7.3 遍歷列表 93
7.3.1 直接使用for循環實現 93
【實例7.2】 顯示中國十大名勝古蹟 94
7.3.2 使用for循環和enumerate( )函式實現 94
【實例7.3】 帶編號顯示中國十大名勝古蹟 94
7.4 添加、修改和刪除列表元素 95
7.4.1 添加元素 95
【實例7.4】 向桌球男子單打世界排名榜列表中添加5名人員 96
7.4.2 修改元素 96
7.4.3 刪除元素 96
7.5 對列表進行統計計算 97
7.5.1 獲取指定元素出現的次數 98
7.5.2 獲取指定元素首次出現的下標 98
7.5.3 統計數值列表的元素和 99
7.6 列表排序 99
7.6.1 使用列表對象的sort( )方法 99
7.6.2 使用內置的sorted( )函式實現 100
7.7 列表推導式 101
本章知識思維導圖 103
第8章 元組(tuple) 104 視頻講解:6節,44分鐘
8.1 什麼是元組 105
8.2 元組的創建 105
8.2.1 使用賦值運算符直接創建元組 105
【實例8.1】 使用元組保存咖啡館裡提供的咖啡名稱 106
8.2.2 創建空元組 106
8.2.3 創建數值元組 107
8.3 刪除元組 107
8.4 訪問和修改元組元素 107
8.4.1 訪問元組元素 107
【實例8.2】 使用for循環列出咖啡館裡的咖啡名稱 108
【實例8.3】 帶編號顯示咖啡館裡的咖啡名稱 109
8.4.2 修改元組元素 109
8.5 元組推導式 110
【實例8.4】 生成一組100~999之間不重複的隨機數 112
本章知識思維導圖 112
第9章 字元串的常用操作 113 視頻講解:11節,117分鐘
9.1 連線字元串 114
9.1.1 拼接字元串 114
9.1.2 合併字元串 115
【實例9.1】 通過好友列表生成全部被@的好友 115
9.2 計算字元串的長度 115
9.3 截取與分割字元串 116
9.3.1 截取字元串 116
【實例9.2】 截取身份證號碼中的出生日期 118
9.3.2 分割字元串 118
【實例9.3】 輸出被@的好友名稱 119
9.4 查找或替換字元串 120
9.4.1 count( )方法 120
9.4.2 find( )方法 120
9.4.3 index( )方法 121
9.4.4 startswith( )方法 122
9.4.5 endswith( )方法 122
9.4.6 replace( )方法 122
9.5 字母的大小寫轉換 123
9.5.1 大寫字母轉換為小寫字母 123
9.5.2 小寫字母轉換為大寫字母 124
9.6 去除字元串中的空格和特殊字元 124
9.6.1 strip( )方法 124
9.6.2 lstrip( )方法 125
9.6.3 rstrip( )方法 125
9.7 格式化字元串 126
9.7.1 使用“%”操作符 126
9.7.2 使用字元串對象的format( )方法 127
【實例9.4】 格式化不同的數值類型數據(format( )方法版) 129
9.7.3 使用f-string 129
【實例9.5】 格式化不同的數值類型數據(f-string版) 131
9.8 字元串編碼轉換 132
9.8.1 使用encode( )方法編碼 132
9.8.2 使用decode( )方法解碼 133
本章知識思維導圖 134
第2篇 進階篇
第10章 正則表達式操作 136 視頻講解:3節,34分鐘
10.1 在Python中使用正則表達式 137
10.1.1 創建模式字元串 137
10.1.2 使用re模組實現正則表達式操作 138
【實例10.1】 匹配一個大寫字母 139
10.2 Python支持的正則表達式語法 139
10.2.1 字元和字元集 139
【實例10.2】 匹配字元串中的第一個數字 140
10.2.2 限定符 141
【實例10.3】 匹配字元串中的3個數字 141
10.2.3 選擇與分組 142
10.3 使用正則表達式操作字元串 143
10.3.1 匹配字元串 143
【實例10.4】 findall( )方法多分組匹配示例 145
【實例10.5】 finditer( )方法多分組匹配示例 146
10.3.2 替換字元串 147
【實例10.6】 替換出現的違禁詞 147
10.3.3 分割字元串 148
本章知識思維導圖 149
第11章 字典與集合 150 視頻講解:8節,83分鐘
11.1 字典(dictionary) 151
11.1.1 創建字典 151
【實例11.1】 創建星座字典 152
11.1.2 刪除字典 154
11.1.3 訪問字典 154
11.1.4 遍歷字典 155
11.1.5 添加、修改和刪除字典元素 156
11.1.6 字典推導式 157
【實例11.2】 套用字典推導式創建星座字典 158
11.2 集合(set) 158
11.2.1 創建集合 159
【實例11.3】 創建保存學生選課信息的集合 159
11.2.2 向集合中添加元素 160
11.2.3 集合中刪除元素 161
【實例11.4】 學生更改所選課程 162
11.2.4 集合的交集、並集和差集運算 162
【實例11.5】 對社團集合進行交集、並集和差集運算 162
本章知識思維導圖 163
第12章 函式 164 視頻講解:13節,132分鐘
12.1 自定義函式 165
12.1.1 創建函式 165
【實例12.1】 定義過濾危險字元的函式 166
12.1.2 調用函式 166
12.1.3 pass語句 167
12.2 傳遞參數 167
12.2.1 形式參數和實際參數 167
【實例12.2】 編寫函式實現根據身高、體重計算BMI指數 169
12.2.2 位置參數 170
12.2.3 關鍵字參數 171
12.2.4 為參數設定默認值 171
12.2.5 可變參數 173
12.3 函式的返回值 175
【實例12.3】 編寫計算矩形面積的函式 175
12.4 變數的作用域 176
12.4.1 局部變數 176
12.4.2 全局變數 176
12.5 匿名函式(lambda) 177
【實例12.4】 套用lambda實現對學生成績列表排序 178
12.6 常用Python內置函式 179
本章知識思維導圖 180
第13章 模組和包 181 視頻講解:10節,105分鐘
13.1 什麼是模組 182
13.2 自定義模組 182
13.2.1 創建模組 182
【實例13.1】 創建一個模組 182
13.2.2 使用import語句導入模組 182
13.2.3 使用from…import語句導入模組 183
【實例13.2】 導入兩個包括同名函式的模組 184
13.2.4 模組搜尋目錄 186
13.3 以主程式的形式執行 187
【實例13.3】 創建走進VR的世界模組 187
13.4 Python中的包 189
13.4.1 Python程式的包結構 189
13.4.2 創建和使用包 190
13.5 引用其他模組 192
13.5.1 導入和使用標準模組 192
【實例13.4】 生成由數字、字母組成的4位驗證碼 192
13.5.2 第三方模組的下載與安裝 194
本章知識思維導圖 195
第14章 面向對象與類 196 視頻講解:11節,112分鐘
14.1 面向對象的概念 197
14.1.1 對象 197
14.1.2 類 197
14.2 類的定義和使用 197
14.2.1 定義類 197
14.2.2 創建類的實例 198
14.2.3 魔術方法——__init__( ) 198
14.2.4 創建類的成員並訪問 199
【實例14.1】 創建大雁類並定義飛行方法 200
【實例14.2】 通過類屬性統計類的實例個數 201
14.2.5 私有成員 204
14.3 @property裝飾器 205
14.3.1 將創建的方法轉換為唯讀屬性 205
14.3.2 為屬性添加安全保護機制 205
【實例14.3】 在模擬電影點播功能時套用屬性 206
14.4 繼承 207
14.4.1 繼承的基本語法 207
【實例14.4】 創建水果基類及其派生類 208
14.4.2 方法重寫 208
14.4.3 派生類中調用基類的__init__( )方法 209
【實例14.5】 在派生類中調用基類的__init__( )方法定義類屬性 210
本章知識思維導圖 211
第15章 檔案I/O 212 視頻講解:14節,140分鐘
15.1 基本檔案操作 213
15.1.1 創建和打開檔案 213
15.1.2 關閉檔案 215
15.1.3 打開檔案時使用with語句 215
15.1.4 寫入檔案內容 216
【實例15.1】 將每日一貼信息寫入檔案 216
15.1.5 讀取檔案 218
【實例15.2】 讀取檔案中的指定字元 218
【實例15.3】 逐行顯示每日一貼信息 219
15.2 目錄操作 221
15.2.1 os和os.path模組 221
15.2.2 路徑 223
15.2.3 判斷目錄是否存在 224
15.2.4 創建目錄 225
15.2.5 刪除目錄 226
15.2.6 遍歷目錄 227
【實例15.4】 遍歷指定目錄 228
15.3 高級檔案操作 229
15.3.1 刪除檔案 229
15.3.2 重命名檔案和目錄 230
【實例15.5】 重命名檔案 230
15.3.3 獲取檔案基本信息 231
【實例15.6】 獲取檔案基本信息 232
本章知識思維導圖 232
第16章 異常處理與程式調試 233 視頻講解:6節,52分鐘
16.1 異常處理 234
16.1.1 了解Python中的異常 234
【實例16.1】 執行除法運算 234
16.1.2 使用try…except語句捕獲異常 235
【實例16.2】 處理除運算可能產生的異常 236
16.1.3 使用try…except…else語句捕獲異常 237
16.1.4 使用try…except…finally語句捕獲異常 237
16.1.5 使用raise語句拋出異常 238
【實例16.3】 使用raise語句拋出“除數不能為0”的異常 239
16.2 程式調試 239
16.2.1 使用自帶的IDLE調試程式 239
16.2.2 使用PyCharm調試程式 242
16.2.3 使用assert語句調試程式 245
【實例16.4】 演示使用斷言調試程式 246
本章知識思維導圖 247
第3篇 套用篇
第17章 海龜繪圖 250
17.1 了解海龜繪圖 251
17.1.1 海龜繪圖的坐標系 251
17.1.2 海龜繪圖三要素 252
17.2 繪製第一隻海龜 252
【實例17.1】 繪製一隻向前爬行的海龜 252
17.3 視窗設定 253
17.3.1 設定視窗的尺寸和初始位置 254
17.3.2 設定視窗標題 254
17.3.3 設定視窗的背景顏色 255
17.3.4 設定視窗的背景圖片 256
17.3.5 清空螢幕上的繪圖 256
17.3.6 關閉視窗 257
17.4 設定畫筆樣式 257
17.4.1 畫筆初始形狀 257
17.4.2 設定畫筆顏色 258
17.4.3 落筆與抬筆 260
【實例17.2】 繪製兩條不同顏色的平行線 261
17.4.4 設定線條粗細 261
17.4.5 隱藏與顯示海龜游標 262
17.4.6 設定畫筆的速度 263
17.5 繪製圖形 263
17.5.1 繪製線條 263
【實例17.3】 繪製台階 264
【實例17.4】 繪製回文圖案 264
17.5.2 繪製矩形 265
【實例17.5】 繪製彩色框線的矩形 265
17.5.3 繪製圓或弧形 266
【實例17.6】 繪製五環 267
17.5.4 繪製多邊形 268
17.5.5 繪製填充圖形 269
17.5.6 將繪製的圖形定義為畫筆形狀 270
【實例17.7】 定義畫筆形狀為正八邊形 271
17.6 輸入/輸出文字 271
17.6.1 輸出文字 271
17.6.2 輸入文字 272
17.7 事件處理 274
17.7.1 鍵盤事件 274
17.7.2 滑鼠事件 275
【實例17.8】 獲取滑鼠點擊位置 275
【實例17.9】 簡易手繪板 277
17.8 計時器 277
本章知識思維導圖 278
第18章 GUI設計之PyQt5 279 視頻講解:11節,143分鐘
18.1 初識Python GUI 280
18.2 安裝PyQt5 280
18.3 使用Qt Designer創建視窗 282
18.3.1 創建主視窗 282
18.3.2 設計主視窗 283
18.3.3 預覽視窗效果 284
18.3.4 將.ui檔案轉換為.py檔案 284
18.4 信號與槽 286
18.4.1 編輯信號與槽 287
18.4.2 自定義槽 288
【實例18.1】 信號與自定義槽的綁定 288
18.4.3 將自定義槽連線到信號 288
18.5 常用控制項 289
18.5.1 Label:標籤控制項 289
【實例18.2】 Label標籤控制項的使用 289
18.5.2 LineEdit:單行文本框 291
【實例18.3】 設計帶用戶名和密碼的登錄視窗 292
18.5.3 TextEdit:多行文本框 292
【實例18.4】 多行文本和HTML文本的對比顯示 293
18.5.4 PushButton:按鈕 293
【實例18.5】 製作用戶登錄視窗 294
18.5.5 CheckBox:複選框 295
【實例18.6】 設定用戶許可權 295
18.5.6 RadioButton:單選按鈕 296
18.5.7 ComboBox:下拉組合框 297
【實例18.7】 在下拉列表中選擇職位 297
本章知識思維導圖 298
第19章 網路爬蟲開發 299 視頻講解:13節,150分鐘
19.1 初識網路爬蟲 300
19.1.1 網路爬蟲概述 300
19.1.2 網路爬蟲的基本工作流程 300
19.2 網路爬蟲的常用技術 300
19.2.1 網路請求模組 300
19.2.2 處理請求頭headers 303
19.2.3 模擬網路逾時的處理 304
19.2.4 代理服務 305
19.2.5 HTML解析之BeautifulSoup 306
19.3 常用網路爬蟲開發框架Scrapy 308
19.3.1 安裝Scrapy爬蟲框架 308
19.3.2 創建Scrapy項目 309
19.3.3 創建爬蟲 310
【實例19.1】 爬取網頁代碼並保存html檔案 310
19.4 實戰項目:快手爬票 311
19.4.1 概述 311
19.4.2 創建快手爬票項目 311
19.4.3 主窗體設計 312
19.4.4 分析網頁請求參數 318
19.4.5 下載站名檔案 320
19.4.6 獲取車票信息並顯示 322
本章知識思維導圖 327
第4篇 項目篇
第20章 小海龜挑戰大迷宮 330
20.1 需求分析 331
20.2 系統設計 331
20.2.1 遊戲功能結構 331
20.2.2 遊戲業務流程 331
20.2.3 系統預覽 332
20.3 系統開發必備 333
20.3.1 系統開發環境 333
20.3.2 資料夾組織結構 333
20.4 主視窗設計 333
20.5 遊戲地圖的設計 334
20.5.1 設計保存地圖信息的TXT檔案 335
20.5.2 讀取檔案並轉換為二維列表 335
20.5.3 繪製迷宮地圖 336
20.6 走迷宮設計 338
20.6.1 手動走迷宮 338
20.6.2 顯示答案(自動走迷宮) 341
20.7 關卡設定 344
20.7.1 初始化關卡信息 344
20.7.2 實現過關提示 345
本章知識思維導圖 346
第21章 AI圖像識別助手 347 視頻講解:7節,88分鐘
21.1 需求分析 348
21.2 系統設計 348
21.2.1 系統功能結構 348
21.2.2 系統設計流程 348
21.2.3 系統預覽 348
21.3 系統開發必備 350
21.3.1 系統開發環境 350
21.3.2 資料夾組織結構 350
21.4 開發前的準備工作 350
21.4.1 申請百度AI接口 351
21.4.2 urllib、urllib.request模組 352
21.4.3 json模組 352
21.5 AI圖像識別助手的開發 353
21.5.1 設計主窗體 353
21.5.2 添加分類 353
21.5.3 選擇識別的圖片 354
21.5.5 植物圖像識別 357
21.5.6 動物圖像識別 358
21.5.7 複製識別結果到剪貼簿 359
本章知識思維導圖 360