第一部分 基礎知識
第1章 起步 2
1.1 搭建編程環境 2
1.1.1 Python版本 2
1.1.2 運行Python代碼片段 2
1.1.3 Sublime Text簡介 3
1.2 在不同操作係統中搭建Python編程環境 3
1.2.1 在Windows係統中搭建Python編程環境 4
1.2.2 在macOS係統中搭建Python編程環境 5
1.2.3 在Linux 係統中搭建Python編程環境 7
1.3 運行Hello World 程序 8
1.3.1 配置Sublime Text以使用正確的Python版本 8
1.3.2 運行程序hello_world.py 8
1.4 解決安裝問題 9
1.5 從終端運行Python程序 9
1.5.1 在Windows係統中從終端運行Python 程序 10
1.5.2 在Linux和macOS係統中從終端運行Python程序 10
1.6 小結 11
第2章 變量和簡單數據類型 12
2.1 運行hello_world.py時發生的情況 12
2.2 變量 13
2.2.1 變量的命名和使用 13
2.2.2 使用變量時避免命名錯誤 14
2.2.3 變量是標簽 15
2.3 字符串 16
2.3.1 使用方法修改字符串的大小寫 17
2.3.3 使用製錶符或換行符來添加空白 18
2.3.4 刪除空白 19
2.3.5 使用字符串時避免語法錯誤 20
2.4 數 21
2.4.1 整數 22
2.4.2 浮點數 22
2.4.3 整數和浮點數 23
2.4.4 數中的下劃綫 23
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 訪問列錶元素 29
3.1.2 索引從0而不是1開始 29
3.1.3 使用列錶中的各個值 30
3.2 修改、添加和刪除元素 31
3.2.1 修改列錶元素 31
3.2.2 在列錶中添加元素 31
3.2.3 從列錶中刪除元素 32
3.3 組織列錶 36
3.3.1 使用方法sort()對列錶永久排序 37
3.3.2 使用函數sorted()對列錶臨時排序 37
3.3.3 倒著打印列錶 38
3.3.4 確定列錶的長度 38
3.4 使用列錶時避免索引錯誤 39
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 定義元組 57
4.5.2 遍曆元組中的所有值 58
4.5.3 修改元組變量 59
4.6 設置代碼格式 60
4.6.1 格式設置指南 60
4.6.2 縮進 60
4.6.3 行長 60
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 檢查特定值是否包含在列錶中 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()來獲取數值輸入 102
7.1.3 求模運算符 104
7.2 while循環簡介 105
7.2.1 使用while循環 105
7.2.2 讓用戶選擇何時退齣 105
7.2.3 使用標誌 107
7.2.4 使用break退齣循環 108
7.2.5 在循環中使用continue 109
7.2.6 避免無限循環 109
7.3 使用while循環處理列錶和字典 111
7.3.1 在列錶之間移動元素 111
7.3.2 刪除為特定值的所有列錶元素 112
7.3.3 使用用戶輸入來填充字典 112
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 使用任意數量的關鍵字實參 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 小結 138
第9章 類 140
9.1 創建和使用類 140
9.1.1 創建Dog類 141
9.1.2 根據類創建實例 142
9.2 使用類和實例 144
9.2.1 Car類 145
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 自定義工作流程 160
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 使用文件的內容 168
10.1.6 包含一百萬位的大型文件 170
10.2 寫入文件 171
10.2.1 寫入空文件 171
10.2.2 寫入多行 172
10.2.3 附加到文件 173
10.3 異常 174
10.3.1 處理ZeroDivisionError異常 174
10.3.2 使用try-except 代碼塊 174
10.3.3 使用異常避免崩潰 175
10.3.4 else代碼塊 176
10.3.5 處理FileNotFoundError異常 177
10.3.6 分析文本 178
10.3.7 使用多個文件 179
10.3.8 靜默失敗 180
10.3.9 決定報告哪些錯誤 181
10.4 存儲數據 182
10.4.1 使用json.dump()和json.load() 182
10.4.2 保存和讀取用戶生成的數據 183
10.4.3 重構 185
10.5 小結 187
第11章 測試代碼 188
11.1 測試函數 188
11.1.1 單元測試和測試用例 189
11.1.2 可通過的測試 189
11.1.3 未通過的測試 191
11.1.4 測試未通過時怎麼辦 192
11.1.5 添加新測試 193
11.2 測試類 194
11.2.1 各種斷言方法 194
11.2.2 一個要測試的類 195
11.2.3 測試AnonymousSurvey類 197
11.2.4 方法setUp() 198
11.3 小結 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.4 添加飛船圖像 208
12.4.1 創建Ship類 209
12.4.2 在屏幕上繪製飛船 210
12.5 重構:方法_check_events()和__update_screen() 211
12.5.1 方法_check_events() 211
12.5.2 方法_update_screen() 212
12.6 駕駛飛船 213
12.6.1 響應按鍵 213
12.6.2 允許持續移動 214
12.6.3 左右移動 215
12.6.4 調整飛船的速度 216
12.6.5 限製飛船的活動範圍 218
12.6.6 重構_check_events() 218
12.6.7 按Q鍵退齣 219
12.6.8 在全屏模式下運行遊戲 219
12.7 簡單迴顧 220
12.7.1 alien_invasion.py 220
12.7.2 settings.py 220
12.7.3 ship.py 220
12.8 射擊 221
12.8.1 添加子彈設置 221
12.8.2 創建Bullet類 221
12.8.3 將子彈存儲到編組中 223
12.8.4 開火 223
12.8.5 刪除消失的子彈 225
12.8.6 限製子彈數量 225
12.8.7 創建方法_update_bullets() 227
第13章 外星人來瞭 228
13.1 項目迴顧 228
13.2 創建第一個外星人 229
13.2.1 創建Alien類 229
13.2.2 創建Alien實例 230
13.3 創建一群外星人 232
13.3.1 確定一行可容納多少個外星人 232
13.3.2 創建一行外星人 232
13.3.3 重構_create_fleet() 234
13.3.4 添加行 234
13.4 讓外星人群移動 237
13.4.1 嚮右移動外星人群 237
13.4.2 創建錶示外星人移動方嚮的設置 238
13.4.3 檢查外星人是否撞到瞭屏幕邊緣 238
13.4.4 嚮下移動外星人群並改變移動方嚮 239
13.5 射殺外星人 240
13.5.1 檢測子彈與外星人的碰撞 241
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 確定應運行遊戲的哪些部分 248
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 修改標簽文字和綫條粗細 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 使用顔色映射 283
15.2.9 自動保存圖錶 284
15.3 隨機漫步 284
15.3.1 創建RandomWalk類 284
15.3.2 選擇方嚮 285
15.3.3 繪製隨機漫步圖 286
15.3.4 模擬多次隨機漫步 287
15.3.5 設置隨機漫步圖的樣式 288
15.4 使用Plotly模擬擲骰子 292
15.4.1 安裝Plotly 292
15.4.2 創建Die類 293
15.4.3 擲骰子 293
15.4.4 分析結果 294
15.4.5 繪製直方圖 294
15.4.6 同時擲兩個骰子 296
15.4.7 同時擲兩個麵數不同的骰子 298
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.1.11 自己動手下載數據 313
16.2 製作全球地震散點圖:JSON格式 315
16.2.2 查看JSON數據 315
16.2.3 創建地震列錶 317
16.2.4 提取震級 317
16.2.5 提取位置數據 318
16.2.6 繪製震級散點圖 319
16.2.7 另一種指定圖錶數據的方式 320
16.2.8 定製標記的尺寸 321
16.2.9 定製標記的顔色 322
16.2.10 其他漸變 323
16.2.11 添加鼠標指嚮時顯示的文本 324
16.3 小結 325
第17章 使用API 326
17.1 使用Web 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 改進Plotly圖錶 334
17.2.2 添加自定義工具提示 336
17.2.3 在圖錶中添加可單擊的鏈接 337
17.2.4 深入瞭解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 定義模型 348
18.2.2 激活模型 349
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 358
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 應用程序users 381
19.2.2 將users添加到settings.py 中 381
19.2.3 包含users的URL 382
19.2.4 登錄頁麵 382
19.2.5 注銷 384
19.2.6 注冊頁麵 386
19.3 讓用戶擁有自己的數據 388
19.3.1 使用@login_required限製訪問 388
19.3.2 將數據關聯到用戶 390
19.3.3 隻允許用戶訪問自己的主題 393
19.3.4 保護用戶的主題 393
19.3.5 保護頁麵edit_entry 394
19.3.6 將新主題關聯到當前用戶 396
第20章 設置應用程序的樣式並部署 397
20.1.1 應用程序django-bootstrap4 398
20.1.3 修改base.html 399
20.1.4 使用jumbotron設置主頁的樣式 403
20.1.5 設置登錄頁麵的樣式 404
20.1.6 設置顯示所有主題的頁麵的樣式 405
20.1.7 設置顯示單個主題的頁麵中的條目樣式 406
20.2 部署“學習筆記” 407
20.2.1 建立Heroku賬戶 408
20.2.2 安裝Heroku CLI 408
20.2.3 安裝必要的包 408
20.2.4 創建文件requirements.txt 409
20.2.6 為部署到Heroku而修改settings.py 410
20.2.7 創建啓動進程的Procfile 410
20.2.8 使用Git 跟蹤項目文件 410
20.2.9 推送到Heroku 412
20.2.10 在Heroku上建立數據庫 414
20.2.12 確保項目的安全 416
20.2.13 提交並推送修改 416
20.2.14 在Heroku 上設置環境變量 417
20.2.15 創建自定義錯誤頁麵 418
20.2.16 繼續開發 420
20.2.17 設置SECRET_KEY 421
20.2.18 將項目從Heroku刪除 421
20.3 小結 422
附錄A 安裝與故障排除 423
附錄B 文本編輯器與IDE 428
附錄C 尋求幫助 432
附錄D 使用Git 進行版本控製 436
後記 445
· · · · · · (
收起)