內容簡介
本書是針對所有層次的 Python 讀者而作的 Python 入門書。全書分為兩部分:第一部分介紹使用Python 編程所必須了解的基本概念,包括強大的 Python 庫和工具,以及列表、字典、if 語句、類、檔案和異常、測試代碼等內容;第二部分將理論付諸實踐,講解如何開發三個項目,包括簡單的 2D 游 戲、利用數據生成互動式的信息圖以及創建和定製簡單的 Web 應用程式,並幫助讀者解決常見編程問題和困惑。第 3 版進行了全面修訂:使用了文本編輯器 VS Code,新增了介紹 removeprefix() 方法和removesuffix() 方法的內容,並且在項目中利用了Matplotlib 和 Plotly 的最新特性,等等。
本書適合對 Python 感興趣的所有讀者閱讀。
圖書目錄
第一部分 基礎知識
第1章 起步 2
1.1 編程環境簡介 2
1.1.1 Python版本 2
1.1.2 運行Python代碼片段 2
1.1.3 編輯器VS Code簡介 3
1.2 在各種作業系統中搭建Python編程
環境 3
1.2.1 在Windows系統中搭建Python編程環境 4
1.2.2 在macOS系統中搭建Python編程環境 5
1.2.3 在Linux系統中搭建Python
編程環境 6
1.3 運行Hello World程式 7
1.3.1 給VS Code安裝Python擴展 7
1.3.2 運行程式hello_world.py 8
1.4 排除安裝問題 8
1.5 從終端運行Python程式 9
1.5.1 在Windows系統中從終端
運行Python程式 9
1.5.2 在Linux和macOS系統中從
終端運行Python程式 10
1.6 小結 11
第2章 變數和簡單的數據類型 12
2.1 運行hello_world.py時發生的情況 12
2.2 變數 12
2.2.1 變數的命名和使用 13
2.2.2 如何在使用變數時避免命名
錯誤 14
2.2.3 變數是標籤 15
2.3 字元串 16
2.3.1 使用方法修改字元串的大小寫 16
2.3.2 在字元串中使用變數 17
2.3.3 使用制表符或換行符來添加
空白 18
2.3.4 刪除空白 18
2.3.5 刪除前綴 20
2.3.6 如何在使用字元串時避免語法錯誤 20
2.4 數 22
2.4.1 整數 22
2.4.2 浮點數 23
2.4.3 整數和浮點數 23
2.4.4 數中的下劃線 24
2.4.5 同時給多個變數賦值 24
2.4.6 常量 24
2.5 注釋 25
2.5.1 如何編寫注釋 25
2.5.2 該編寫什麼樣的注釋 25
2.6 Python之禪 26
2.7 小結 27
第3章 列表簡介 28
3.1 列表是什麼 28
3.1.1 訪問列表元素 28
3.1.2 索引從0而不是1開始 29
3.1.3 使用列表中的各個值 30
3.2 修改、添加和刪除元素 30
3.2.1 修改列表元素 31
3.2.2 在列表中添加元素 31
3.2.3 從列表中刪除元素 32
3.3 管理列表 37
3.3.1 使用sort()方法對列表進行永久排序 37
3.3.2 使用sorted()函式對列表進行臨時排序 37
3.3.3 反向列印列表 38
3.3.4 確定列表的長度 39
3.4 使用列表時避免索引錯誤 40
3.5 小結 41
第4章 操作列表 42
4.1 遍歷整個列表 42
4.1.1 深入研究循環 43
4.1.2 在for循環中執行更多的操作 44
4.1.3 在for循環結束後執行一些
操作 45
4.2 避免縮進錯誤 45
4.2.1 忘記縮進 46
4.2.2 忘記縮進額外的代碼行 46
4.2.3 不必要的縮進 47
4.2.4 循環後不必要的縮進 47
4.2.5 遺漏冒號 48
4.3 創建數值列表 49
4.3.1 使用range()函式 49
4.3.2 使用range()創建數值列表 50
4.3.3 對數值列表執行簡單的統計
計算 51
4.3.4 列表推導式 52
4.4 使用列表的一部分 53
4.4.1 切片 53
4.4.2 遍歷切片 54
4.4.3 複製列表 55
4.5 元組 57
4.5.1 定義元組 58
4.5.2 遍曆元組中的所有值 58
4.5.3 修改元組變數 59
4.6 設定代碼格式 60
4.6.1 格式設定指南 60
4.6.2 縮進 60
4.6.3 行長 61
4.6.4 空行 61
4.6.5 其他格式設定指南 61
4.7 小結 62
第5章 if語句 63
5.1 一個簡單的示例 63
5.2 條件測試 64
5.2.1 檢查是否相等 64
5.2.2 如何在檢查是否相等時忽略
大小寫 64
5.2.3 檢查是否不等 65
5.2.4 數值比較 66
5.2.5 檢查多個條件 66
5.2.6 檢查特定的值是否在列表中 67
5.2.7 檢查特定的值是否不在列表中 68
5.2.8 布爾表達式 68
5.3 if語句 69
5.3.1 簡單的if語句 69
5.3.2 if-else語句 70
5.3.3 if-elif-else語句 71
5.3.4 使用多個elif代碼塊 72
5.3.5 省略else代碼塊 73
5.3.6 測試多個條件 73
5.4 使用if語句處理列表 76
5.4.1 檢查特殊元素 76
5.4.2 確定列表非空 77
5.4.3 使用多個列表 77
5.5 設定if語句的格式 79
5.6 小結 80
第6章 字典 81
6.1 一個簡單的字典 81
6.2 使用字典 82
6.2.1 訪問字典中的值 82
6.2.2 添加鍵值對 83
6.2.3 從創建一個空字典開始 83
6.2.4 修改字典中的值 84
6.2.5 刪除鍵值對 85
6.2.6 由類似的對象組成的字典 86
6.2.7 使用get()來訪問值 87
6.3 遍歷字典 88
6.3.1 遍歷所有的鍵值對 88
6.3.2 遍歷字典中的所有鍵 90
6.3.3 按特定的順序遍歷字典中的
所有鍵 92
6.3.4 遍歷字典中的所有值 92
6.4 嵌套 94
6.4.1 字典列表 94
6.4.2 在字典中存儲列表 97
6.4.3 在字典中存儲字典 98
6.5 小結 100
第7章 用戶輸入和while循環 101
7.1 input()函式的工作原理 101
7.1.1 編寫清晰的提示 102
7.1.2 使用int()來獲取數值輸入 103
7.1.3 求模運算符 104
7.2 while循環簡介 105
7.2.1 使用while循環 105
7.2.2 讓用戶選擇何時退出 106
7.2.3 使用標誌 107
7.2.4 使用break退出循環 108
7.2.5 在循環中使用continue 109
7.2.6 避免無限循環 110
7.3 使用while循環處理列表和字典 111
7.3.1 在列表之間移動元素 111
7.3.2 刪除為特定值的所有列表
元素 112
7.3.3 使用用戶輸入填充字典 113
7.4 小結 114
第8章 函式 115
8.1 定義函式 115
8.1.1 向函式傳遞信息 116
8.1.2 實參和形參 116
8.2 傳遞實參 117
8.2.1 位置實參 117
8.2.2 關鍵字實參 119
8.2.3 默認值 119
8.2.4 等效的函式調用 120
8.2.5 避免實參錯誤 121
8.3 返回值 122
8.3.1 返回簡單的值 122
8.3.2 讓實參變成可選的 123
8.3.3 返回字典 124
8.3.4 結合使用函式和while循環 125
8.4 傳遞列表 127
8.4.1 在函式中修改列表 128
8.4.2 禁止函式修改列表 130
8.5 傳遞任意數量的實參 131
8.5.1 結合使用位置實參和任意數量的實參 132
8.5.2 使用任意數量的關鍵字實參 133
8.6 將函式存儲在模組中 134
8.6.1 導入整個模組 134
8.6.2 導入特定的函式 135
8.6.3 使用as給函式指定別名 136
8.6.4 使用as給模組指定別名 136
8.6.5 導入模組中的所有函式 137
8.7 函式編寫指南 137
8.8 小結 139
第9章 類 140
9.1 創建和使用類 140
9.1.1 創建Dog類 141
9.1.2 根據類創建實例 142
9.2 使用類和實例 144
9.2.1 Car類 144
9.2.2 給屬性指定默認值 145
9.2.3 修改屬性的值 146
9.3 繼承 149
9.3.1 子類的__init__()方法 149
9.3.2 給子類定義屬性和方法 151
9.3.3 重寫父類中的方法 152
9.3.4 將實例用作屬性 152
9.3.5 模擬實物 154
9.4 導入類 155
9.4.1 導入單個類 155
9.4.2 在一個模組中存儲多個類 157
9.4.3 從一個模組中導入多個類 158
9.4.4 導入整個模組 158
9.4.5 導入模組中的所有類 159
9.4.6 在一個模組中導入另一個
模組 159
9.4.7 使用別名 160
9.4.8 找到合適的工作流程 161
9.5 Python標準庫 161
9.6 類的編程風格 162
9.7 小結 163
第10章 檔案和異常 164
10.1 讀取檔案 164
10.1.1 讀取檔案的全部內容 164
10.1.2 相對檔案路徑和絕對檔案
路徑 166
10.1.3 訪問檔案中的各行 167
10.1.4 使用檔案的內容 168
10.1.5 包含100萬位的大型檔案 169
10.1.6 圓周率值中包含你的
生日嗎 169
10.2 寫入檔案 170
10.2.1 寫入一行 171
10.2.2 寫入多行 171
10.3 異常 172
10.3.1 處理ZeroDivisionError
異常 172
10.3.2 使用try-except代碼塊 173
10.3.3 使用異常避免崩潰 173
10.3.4 else代碼塊 174
10.3.5 處理FileNotFoundError
異常 175
10.3.6 分析文本 177
10.3.7 使用多個檔案 177
10.3.8 靜默失敗 179
10.3.9 決定報告哪些錯誤 179
10.4 存儲數據 181
10.4.1 使用json.dumps()和json.loads() 181
10.4.2 保存和讀取用戶生成的
數據 182
10.4.3 重構 184
10.5 小結 186
第11章 測試代碼 187
11.1 使用pip安裝pytest 187
11.1.1 更新pip 188
11.1.2 安裝pytest 188
11.2 測試函式 189
11.2.1 單元測試和測試用例 190
11.2.2 可通過的測試 190
11.2.3 運行測試 191
11.2.4 未通過的測試 191
11.2.5 在測試未通過時怎么辦 192
11.2.6 添加新測試 193
11.3 測試類 195
11.3.1 各種斷言 195
11.3.2 一個要測試的類 195
11.3.3 測試AnonymousSurvey類 197
11.3.4 使用夾具 198
11.4 小結 200
第二部分 項 目
項目1 外星人入侵 202
第12章 武裝飛船 203
12.1 規劃項目 203
12.2 安裝Pygame 204
12.3 開始遊戲項目 204
12.3.1 創建Pygame視窗及回響用戶輸入 204
12.3.2 控制幀率 206
12.3.3 設定背景色 207
12.3.4 創建Settings類 207
12.4 添加飛船圖像 208
12.4.1 創建Ship類 209
12.4.2 在螢幕上繪製飛船 211
12.5 重構:_check_events()方法和_update_screen()方法 212
12.5.1 _check_events()方法 212
12.5.2 _update_screen()方法 213
12.6 駕駛飛船 214
12.6.1 回響按鍵 214
12.6.2 允許持續移動 214
12.6.3 左右移動 216
12.6.4 調整飛船的速度 217
12.6.5 限制飛船的活動範圍 218
12.6.6 重構_check_events() 219
12.6.7 按Q鍵退出 220
12.6.8 在全螢幕模式下運行遊戲 220
12.7 簡單回顧 221
12.7.1 alien_invasion.py 221
12.7.2 settings.py 221
12.7.3 ship.py 221
12.8 射擊 222
12.8.1 添加子彈設定 222
12.8.2 創建Bullet類 222
12.8.3 將子彈存儲到編組中 223
12.8.4 開火 224
12.8.5 刪除已消失的子彈 226
12.8.6 限制子彈數量 226
12.8.7 創建_update_bullets()
方法 227
12.9 小結 228
第13章 外星人 229
13.1 項目回顧 229
13.2 創建第一個外星人 230
13.2.1 創建Alien類 230
13.2.2 創建Alien實例 231
13.3 創建外星艦隊 232
13.3.1 創建一行外星人 232
13.3.2 重構_create_fleet() 234
13.3.3 添加多行外星人 235
13.4 讓外星艦隊移動 237
13.4.1 向右移動外星艦隊 237
13.4.2 創建表示外星艦隊移動方向的設定 238
13.4.3 檢查外星人是否到達了螢幕邊緣 239
13.4.4 向下移動外星艦隊並改變移動方向 239
13.5 擊落外星人 240
13.5.1 檢測子彈和外星人的碰撞 240
13.5.2 為測試創建大子彈 242
13.5.3 生成新的外星艦隊 242
13.5.4 加快子彈的速度 243
13.5.5 重構_update_bullets() 243
13.6 結束遊戲 244
13.6.1 檢測外星人和飛船的碰撞 244
13.6.2 回響外星人和飛船的碰撞 245
13.6.3 有外星人到達螢幕下邊緣 247
13.6.4 遊戲結束 248
13.7 確定應運行遊戲的哪些部分 249
13.8 小結 249
第14章 記分 250
14.1 添加Play按鈕 250
14.1.1 創建Button類 250
14.1.2 在螢幕上繪製按鈕 252
14.1.3 開始遊戲 253
14.1.4 重置遊戲 254
14.1.5 將Play按鈕切換到非活動
狀態 254
14.1.6 隱藏游標 255
14.2 提高難度 256
14.2.1 修改速度設定 256
14.2.2 重置速度 258
14.3 記分 258
14.3.1 顯示得分 259
14.3.2 創建記分牌 260
14.3.3 在外星人被擊落時更新
得分 261
14.3.4 重置得分 262
14.3.5 將每個被擊落的外星人都
計入得分 262
14.3.6 提高分數 263
14.3.7 對得分進行捨入 264
14.3.8 最高分 265
14.3.9 顯示等級 267
14.3.10 顯示餘下的飛船數 269
14.4 小結 272
項目2 數據可視化 273
第15章 生成數據 274
15.1 安裝Matplotlib 274
15.2 繪製簡單的折線圖 275
15.2.1 修改標籤文字和線條粗細 276
15.2.2 校正繪圖 277
15.2.3 使用內置樣式 278
15.2.4 使用scatter()繪製散點圖
並設定樣式 279
15.2.5 使用scatter()繪製一系
列點 280
15.2.6 自動計算數據 281
15.2.7 定製刻度標記 282
15.2.8 定製顏色 282
15.2.9 使用顏色映射 283
15.2.10 自動保存繪圖 284
15.3 隨機遊走 284
15.3.1 創建RandomWalk類 284
15.3.2 選擇方向 285
15.3.3 繪製隨機遊走圖 286
15.3.4 模擬多次隨機遊走 287
15.3.5 設定隨機遊走圖的樣式 287
15.4 使用Plotly模擬擲骰子 292
15.4.1 安裝Plotly 292
15.4.2 創建Die類 292
15.4.3 擲骰子 293
15.4.4 分析結果 293
15.4.5 繪製直方圖 294
15.4.6 定製繪圖 295
15.4.7 同時擲兩個骰子 296
15.4.8 進一步定製 298
15.4.9 同時擲兩個面數不同的
骰子 298
15.4.10 保存繪圖 299
15.5 小結 300
第16章 下載數據 301
16.1 CSV檔案格式 301
16.1.1 解析CSV檔案頭 302
16.1.2 列印檔案頭及其位置 302
16.1.3 提取並讀取數據 303
16.1.4 繪製溫度圖 304
16.1.5 datetime模組 305
16.1.6 在圖中添加日期 306
16.1.7 涵蓋更長的時間 307
16.1.8 再繪製一個數據系列 308
16.1.9 給圖中區域著色 309
16.1.10 錯誤檢查 310
16.2 製作全球地震散點圖:GeoJSON
格式 313
16.2.1 地震數據 313
16.2.2 查看GeoJSON數據 313
16.2.3 創建地震列表 316
16.2.4 提取震級 316
16.2.5 提取位置數據 317
16.2.6 繪製地震散點圖 318
16.2.7 指定數據的另一種方式 319
16.2.8 定製標記的尺寸 320
16.2.9 定製標記的顏色 321
16.2.10 其他漸變 323
16.2.11 添加懸停文本 323
16.3 小結 325
第17章 使用API 326
17.1 使用API 326
17.1.1 Git和GitHub 326
17.1.2 使用API調用請求數據 327
17.1.3 安裝Requests 327
17.1.4 處理API回響 328
17.1.5 處理回響字典 329
17.1.6 概述最受歡迎的倉庫 331
17.1.7 監控API的速率限制 332
17.2 使用Plotly可視化倉庫 332
17.2.1 設定圖形的樣式 334
17.2.2 添加定製工具提示 335
17.2.3 添加可單擊的連結 336
17.2.4 定製標記顏色 337
17.2.5 深入了解Plotly和GitHub
API 338
17.3 Hacker News API 338
17.4 小結 341
項目3 Web應用程式 342
第18章 Django入門 343
18.1 建立項目 343
18.1.1 制定規範 343
18.1.2 建立虛擬環境 344
18.1.3 激活虛擬環境 344
18.1.4 安裝Django 345
18.1.5 在Django中創建項目 345
18.1.6 創建資料庫 346
18.1.7 查看項目 346
18.2 創建應用程式 348
18.2.1 定義模型 349
18.2.2 激活模型 350
18.2.3 Django管理網站 351
18.2.4 定義模型Entry 353
18.2.5 遷移模型Entry 354
18.2.6 向管理網站註冊Entry 354
18.2.7 Django shell 355
18.3 創建網頁:學習筆記主頁 357
18.3.1 映射URL 357
18.3.2 編寫視圖 359
18.3.3 編寫模板 360
18.4 創建其他網頁 361
18.4.1 模板繼承 361
18.4.2 顯示所有主題的頁面 363
18.4.3 顯示特定主題的頁面 366
18.5 小結 369
第19章 用戶賬戶 370
19.1 讓用戶能夠輸入數據 370
19.1.1 添加新主題 370
19.1.2 添加新條目 374
19.1.3 編輯條目 378
19.2 創建用戶賬戶 381
19.2.1 應用程式accounts 381
19.2.2 將應用程式accounts添加
到settings.py中 381
19.2.3 包含應用程式accounts的URL 382
19.2.4 登錄頁面 382
19.2.5 註銷 385
19.2.6 註冊頁面 386
19.3 讓用戶擁有自己的數據 389
19.3.1 使用@login_required限制
訪問 389
19.3.2 將數據關聯到用戶 391
19.3.3 只允許用戶訪問自己的
主題 393
19.3.4 保護用戶的主題 394
19.3.5 保護頁面edit_entry 394
19.3.6 將新主題關聯到當前用戶 395
19.4 小結 396
第20章 設定應用程式的樣式並部署 397
20.1 設定項目“學習筆記”的樣式 397
20.1.1 應用程式django-bootstrap5 397
20.1.2 使用Bootstrap設定項目
“學習筆記”的樣式 398
20.1.3 修改base.html 399
20.1.4 使用jumbotron設定主頁的樣式 404
20.1.5 設定登錄頁面的樣式 405
20.1.6 設定頁面topics的樣式 406
20.1.7 設定頁面topic中條目的
樣式 407
20.2 部署“學習筆記” 409
20.2.1 註冊Platform.sh賬戶 409
20.2.2 安裝Platform.sh CLI 409
20.2.3 安裝platformshconfig 410
20.2.4 創建檔案requirements.txt 410
20.2.5 其他部署需求 411
20.2.6 添加配置檔案 411
20.2.7 為部署到Platform.sh而
修改settings.py 414
20.2.8 使用Git跟蹤項目檔案 415
20.2.9 在Platform.sh上創建項目 417
20.2.10 推送到Platform.sh 418
20.2.11 查看線上項目 419
20.2.12 改進Platform.sh部署 420
20.2.13 創建定製錯誤頁面 422
20.2.14 繼續開發 423
20.2.15 將項目從Platform.sh上
刪除 424
20.3 小結 425
附錄A 安裝及故障排除 426
附錄B 文本編輯器和IDE 430
附錄C 尋求幫助 436
附錄D 使用Git進行版本控制 440
附錄E 部署故障排除 449
作者簡介
埃里克·馬瑟斯(Eric Matthes)
締造技術圖書銷售奇蹟的作家,作品影響了全球數百萬讀者。
致力於推動Python編程在全球的普及。執教計算機科學和數學25年,教學風格輕鬆有趣,深受學生喜愛。他對編程的熱愛和豐厚的教學經驗淋漓盡致地體現在了蟒蛇書《Python編程:從入門到實踐》中。
蟒蛇書備受讀者推崇。無論是熟練掌握其他程式語言的程式設計師,還是年僅10歲的萌新,都是本書擁躉。該書在全球範圍內被翻譯為12種語言,累計熱銷近300萬冊,其中僅中文版前兩版的銷量就超過了120萬冊。