目 錄
第 一部分 基礎知識
第 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.py8
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 在循環中使用continue109
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安裝pytest187
11.1.1 更新pip188
11.1.2 安裝pytest188
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 安裝Pygame204
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.py221
12.7.2 settings.py221
12.7.3 ship.py221
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 安裝Matplotlib274
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 安裝Plotly292
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章 使用API326
17.1 使用API326
17.1.1 Git和GitHub326
17.1.2 使用API調用請求數據327
17.1.3 安裝Requests327
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
API338
17.3 Hacker News API338
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 安裝Django345
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 定義模型Entry353
18.2.5 遷移模型Entry354
18.2.6 向管理網站注冊Entry354
18.2.7 Django shell355
18.3 創建網頁:學習筆記主頁357
18.3.1 映射URL357
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 應用程序accounts381
19.2.2 將應用程序accounts添加
到settings.py中381
19.2.3 包含應用程序accounts的URL382
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_entry394
19.3.6 將新主題關聯到當前用戶395
19.4 小結396
第 20章 設置應用程序的樣式並部署397
20.1 設置項目“學習筆記”的樣式397
20.1.1 應用程序django-bootstrap5397
20.1.2 使用Bootstrap設置項目
“學習筆記”的樣式398
20.1.3 修改base.html399
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 CLI409
20.2.3 安裝platformshconfig410
20.2.4 創建文件requirements.txt410
20.2.5 其他部署需求411
20.2.6 添加配置文件411
20.2.7 為部署到Platform.sh而
修改settings.py414
20.2.8 使用Git跟蹤項目文件415
20.2.9 在Platform.sh上創建項目417
20.2.10 推送到Platform.sh418
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 文本編輯器和IDE430
附錄C 尋求幫助436
附錄D 使用Git進行版本控制440
附錄E 部署故障排除449 |