內容簡介
本書是一本針對所有層次的Python讀者而作立定晚的Python入門書。全書分兩部分:首部分介紹用Python 編程所必須了解的基本概念,包括matplotlib、NumPy和Pygal等強大的Python庫和工具介紹,以及列表、字典、if語句、類、檔案與異常、代碼測試等內容;第 二部分將理論付諸實踐,講解如何開發三個項目,包括簡單的Python 2D遊戲開發,如何利用數據生成互動式的信息圖,以及創建和定製簡單的Web套用,並幫讀者解決常見編程問尋協連題和困惑。
圖書目錄
第 一部分 基礎知識
第 1章 起步 2
1.1 搭建編程環境 2
1.1.1 Python 2和Python 3 2
1.1.2 運行Python代碼片段 3
1.1.3 Hello World程式 3
1.2 在不同作業系統中搭建Python編程環境 3
1.2.1 在Linux系統中搭建Python編程環境 3
1.2.2 在OS X系蒸頌蒸地設捆統中搭建Python編程環境 6
1.2.3 在Windows系統中搭建Python編程環境 8
1.3 解決安裝問題 12
1.4 從終端運行Python程式 13
1.4.1 在Linux和OS X系統中從終端運行Python程式 13
1.4.2 在Windows系統中從終端運行Python程式 13
1.5 小結 14
第 2章 變數和簡單數據類型 15
2.1 運行hello_world.py時發生的情況 15
2.2 變數 16
2.2.1 變數的命名和使用 16
2.2.2 使用變數時避免命名錯誤 17
2.3 字元串 18
2.3.1 使用方法修改字元串的大小寫 19
2.3.2 合併(拼接)字元串 19
2.3.3 使用制表符或換行符來添加空白 20
2.3.4 刪除空白 21
2.3.5 使用字元串時避免語法錯誤 22
2.3.6 Python 2中的print語句 23
2.4 數字 24
2.4.1 整數 24
2.4.2 浮點數 25
2.4.3 使用函式str()避免類型錯誤 25
2.4.4 Python 2中的整數 26
2.5 注釋 27
2.5.1 如何編寫注釋 27
2.5.2 該編寫什麼樣的注釋 28
2.6 Python之禪 28
2.7 小結 30
第3章 列表鞏己疊白簡介 31
3.1 列表是什麼 31
3.1.1 訪問列表元素 32
3.1.2 索引從0而不是1開始 32
3.1.3 使用列表中的各個值 33
3.2 修改、添加和刪除元素 33
3.2.1 修改列表元素 34
3.2.2 在列表中添加元素 34
3.2.3 從列表中刪除元素 35
3.3 組織列表 39
3.3.1 使用方法sort()對列表進行永久性排序 39
3.3.2 使用函式sorted()對列表進行臨時排序 40
3.3.3 倒著列印列表 41
3.3.4 確定列表的長度 41
3.4 使用列表時避免索引錯誤 42
3.5 小結 43
第4章 操作列表 44
4.1 遍歷整個列表 44
4.1.1 深入地研究循環 45
4.1.2 在for循環中執行更多的操作 46
4.1.3 在for循環結束後執行一些操作 47
4.2 避免縮進錯誤 47
4.2.1 忘記縮進 48
4.2.2 忘記縮進額外的代碼行 48
4.2.3 不必要的縮進 49
4.2.4 循環後不必要的縮進 49
4.2.5 遺漏了冒號 50
4.3 創建數值列表 51
4.3.1 使用函式range() 51
4.3.2 使用range()創建數字列表 51
4.3.3 對數字列表執行簡單的統計計算 53
4.3.4 列表解析 53
4.4 使用列表的一部分 54
4.4.1 切片 54
4.4.2 遍歷切片 56
4.4.3 複製列表 56
4.5 元組 59
4.5.1 定義元組 59
4.5.2 遍曆元組中的所有值 59
4.5.3 修改元組變數 60
4.6 設定代碼格式 61
4.6.1 格式設定指南 61
4.6.2 縮進 61
4.6.3 行長 61
4.6.4 空精欠殼行 62
4.6.5 其他格式設定指南 62
4.7 小結 63
第5章 if語句 64
5.1 一個簡單示例 64
5.2 條件測試 65
5.2.1 檢查是否相等 65
5.2.2 檢查是否相等時不境櫻朽考慮大小寫 65
5.2.3 檢查是否不相等 66
5.2.4 比較數字 67
5.2.5 檢查多個條件 67
5.2.6 檢查特定值是否包含在列表中 68
5.2.7 檢查特定值是否不包含在列表中 69
5.2.8 布爾表達式 69
5.3 if語句 70
5.3.1 簡單的if語句 70
5.3.2 if-else語句 71
5.3.3 if-elif-else結構 72
5.3.4 使用多個elif代碼塊 73
5.3.5 省略else代碼塊 74
5.3.6 測試多個條件 74
5.4 使用if語句處理列表 76
5.4.1 檢查特殊元素 77
5.4.2 確定列表不是空的 78
5.4.3 使用多個列表 78
5.5 設定if語句的格式 80
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.3 遍歷字典 87
6.3.1 遍歷所有的鍵—值對 87
6.3.2 遍歷字典中的所有鍵 89
6.3.3 按順序遍歷字典中的所有鍵 91
6.3.4 遍歷字典中的所有值 91
6.4 嵌套 93
6.4.1 字典列表 93
6.4.2 在字典中存儲列表 95
6.4.3 在字典中存儲字典 97
6.5 小結 99
第7章 用戶輸入和while循環 100
7.1 函式input()的工作原理 100
7.1.1 編寫清晰的程式 101
7.1.2 使用int()來獲取數值輸入 102
7.1.3 求模運算符 103
7.1.4 在Python 2.7中獲取輸入 104
7.2 while循環簡介 104
7.2.1 使用while循環 104
7.2.2 讓用戶選擇何時退出 105
7.2.3 使用標誌 106
7.2.4 使用break退出循環 107
7.2.5 在循環中使用continue 108
7.2.6 避免無限循環 109
7.3 使用while循環來處理列表和字典 110
7.3.1 在列表之間移動元素 110
7.3.2 刪除包含特定值的所有列表元素 111
7.3.3 使用用戶輸入來填充字典 112
7.4 小結 113
第8章 函式 114
8.1 定義函式 114
8.1.1 向函式傳遞信息 115
8.1.2 實參和形參 115
8.2 傳遞實參 116
8.2.1 位置實參 116
8.2.2 關鍵字實參 118
8.2.3 默認值 118
8.2.4 等效的函式調用 119
8.2.5 避免實參錯誤 120
8.3 返回值 121
8.3.1 返回簡單值 121
8.3.2 讓實參變成可選的 122
8.3.3 返回字典 123
8.3.4 結合使用函式和while循環 124
8.4 傳遞列表 126
8.4.1 在函式中修改列表 126
8.4.2 禁止函式修改列表 129
8.5 傳遞任意數量的實參 130
8.5.1 結合使用位置實參和任意數量實參 131
8.5.2 使用任意數量的關鍵字實參 131
8.6 將函式存儲在模組中 133
8.6.1 導入整個模組 133
8.6.2 導入特定的函式 134
8.6.3 使用as給函式指定別名 134
8.6.4 使用as給模組指定別名 135
8.6.5 導入模組中的所有函式 135
8.7 函式編寫指南 136
8.8 小結 137
第9章 類 138
9.1 創建和使用類 138
9.1.1 創建Dog類 139
9.1.2 根據類創建實例 140
9.2 使用類和實例 142
9.2.1 Car類 143
9.2.2 給屬性指定默認值 143
9.2.3 修改屬性的值 144
9.3 繼承 147
9.3.1 子類的方法__init__() 147
9.3.2 Python 2.7中的繼承 149
9.3.3 給子類定義屬性和方法 149
9.3.4 重寫父類的方法 150
9.3.5 將實例用作屬性 150
9.3.6 模擬實物 152
9.4 導入類 153
9.4.1 導入單個類 153
9.4.2 在一個模組中存儲多個類 155
9.4.3 從一個模組中導入多個類 156
9.4.4 導入整個模組 157
9.4.5 導入模組中的所有類 157
9.4.6 在一個模組中導入另一個模組 157
9.4.7 自定義工作流程 158
9.5 Python標準庫 159
9.6 類編碼風格 161
9.7 小結 161
第 10章 檔案和異常 162
10.1 從檔案中讀取數據 162
10.1.1 讀取整個檔案 162
10.1.2 檔案路徑 164
10.1.3 逐行讀取 165
10.1.4 創建一個包含檔案各行內容的列表 166
10.1.5 使用檔案的內容 166
10.1.6 包含一百萬位的大型檔案 168
10.1.7 圓周率值中包含你的生日嗎 168
10.2 寫入檔案 169
10.2.1 寫入空檔案 170
10.2.2 寫入多行 170
10.2.3 附加到檔案 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 分析文本 176
10.3.7 使用多個檔案 177
10.3.8 失敗時一聲不吭 178
10.3.9 決定報告哪些錯誤 179
10.4 存儲數據 180
10.4.1 使用json.dump()和json.load() 180
10.4.2 保存和讀取用戶生成的數據 181
10.4.3 重構 183
10.5 小結 186
第 11章 測試代碼 187
11.1 測試函式 187
11.1.1 單元測試和測試用例 188
11.1.2 可通過的測試 188
11.1.3 不能通過的測試 190
11.1.4 測試未通過時怎么辦 191
11.1.5 添加新測試 191
11.2 測試類 193
11.2.1 各種斷言方法 193
11.2.2 一個要測試的類 194
11.2.3 測試AnonymousSurvey類 195
11.2.4 方法setUp() 197
11.3 小結 199
第 二部分 項 目
項目1 外星人入侵 202
第 12章 武裝飛船 203
12.1 規劃項目 203
12.2 安裝Pygame 204
12.2.1 使用pip安裝Python包 204
12.2.2 在Linux系統中安裝Pygame 206
12.2.3 在OS X系統中安裝Pygame 207
12.2.4 在Windows系統中安裝Pygame 207
12.3 開始遊戲項目 207
12.3.1 創建Pygame視窗以及回響用戶輸入 208
12.3.2 設定背景色 209
12.3.3 創建設定類 210
12.4 添加飛船圖像 211
12.4.1 創建Ship類 212
12.4.2 在螢幕上繪製飛船 213
12.5 重構:模組game_functions 214
12.5.1 函式check_events() 214
12.5.2 函式update_screen() 215
12.6 駕駛飛船 216
12.6.1 回響按鍵 216
12.6.2 允許不斷移動 217
12.6.3 左右移動 219
12.6.4 調整飛船的速度 220
12.6.5 限制飛船的活動範圍 221
12.6.6 重構check_events() 222
12.7 簡單回顧 223
12.7.1 alien_invasion.py 223
12.7.2 settings.py 223
12.7.3 game_functions.py 223
12.7.4 ship.py 223
12.8 射擊 224
12.8.1 添加子彈設定 224
12.8.2 創建Bullet類 224
12.8.3 將子彈存儲到編組中 226
12.8.4 開火 227
12.8.5 刪除已消失的子彈 228
12.8.6 限制子彈數量 229
12.8.7 創建函式update_bullets() 229
12.8.8 創建函式fire_bullet() 230
12.9 小結 231
第 13章 外星人 232
13.1 回顧項目 232
13.2 創建第 一個外星人 233
13.2.1 創建Alien類 233
13.2.2 創建Alien實例 234
13.2.3 讓外星人出現在螢幕上 235
13.3 創建一群外星人 236
13.3.1 確定一行可容納多少個外星人 236
13.3.2 創建多行外星人 236
13.3.3 創建外星人群 237
13.3.4 重構create_fleet() 239
13.3.5 添加行 240
13.4 讓外星人群移動 242
13.4.1 向右移動外星人 243
13.4.2 創建表示外星人移動方向的設定 244
13.4.3 檢查外星人是否撞到了螢幕邊緣 244
13.4.4 向下移動外星人群並改變移動方向 245
13.5 射殺外星人 246
13.5.1 檢測子彈與外星人的碰撞 246
13.5.2 為測試創建大子彈 247
13.5.3 生成新的外星人群 248
13.5.4 提高子彈的速度 249
13.5.5 重構update_bullets() 249
13.6 結束遊戲 250
13.6.1 檢測外星人和飛船碰撞 250
13.6.2 回響外星人和飛船碰撞 251
13.6.3 有外星人到達螢幕底端 254
13.6.4 遊戲結束 255
13.7 確定應運行遊戲的哪些部分 255
13.8 小結 256
第 14章 記分 257
14.1 添加Play按鈕 257
14.1.1 創建Button類 258
14.1.2 在螢幕上繪製按鈕 259
14.1.3 開始遊戲 261
14.1.4 重置遊戲 261
14.1.5 將Play按鈕切換到非活動狀態 263
14.1.6 隱藏游標 263
14.2 提高等級 264
14.2.1 修改速度設定 264
14.2.2 重置速度 266
14.3 記分 267
14.3.1 顯示得分 267
14.3.2 創建記分牌 268
14.3.3 在外星人被消滅時更新得分 270
14.3.4 將消滅的每個外星人的點數都計入得分 271
14.3.5 提高點數 271
14.3.6 將得分圓整 272
14.3.7 最高得分 274
14.3.8 顯示等級 276
14.3.9 顯示餘下的飛船數 279
14.4 小結 283
項目2 數據可視化 284
第 15章 生成數據 285
15.1 安裝matplotlib 285
15.1.1 在Linux系統中安裝matplotlib 286
15.1.2 在OS X系統中安裝matplotlib 286
15.1.3 在Windows系統中安裝matplotlib 286
15.1.4 測試matplotlib 287
15.1.5 matplotlib畫廊 287
15.2 繪製簡單的折線圖 287
15.2.1 修改標籤文字和線條粗細 288
15.2.2 校正圖形 289
15.2.3 使用scatter()繪製散點圖並設定其樣式 290
15.2.4 使用scatter()繪製一系列點 291
15.2.5 自動計算數據 292
15.2.6 刪除數據點的輪廓 293
15.2.7 自定義顏色 293
15.2.8 使用顏色映射 294
15.2.9 自動保存圖表 295
15.3 隨機漫步 295
15.3.1 創建RandomWalk()類 296
15.3.2 選擇方向 296
15.3.3 繪製隨機漫步圖 297
15.3.4 模擬多次隨機漫步 298
15.3.5 設定隨機漫步圖的樣式 299
15.3.6 給點著色 299
15.3.7 重新繪製起點和終點 300
15.3.8 隱藏坐標軸 301
15.3.9 增加點數 301
15.3.10 調整尺寸以適合螢幕 302
15.4 使用Pygal模擬擲骰子 303
15.4.1 安裝Pygal 304
15.4.2 Pygal畫廊 304
15.4.3 創建Die類 304
15.4.4 擲骰子 305
15.4.5 分析結果 305
15.4.6 繪製直方圖 306
15.4.7 同時擲兩個骰子 307
15.4.8 同時擲兩個面數不同的骰子 309
15.5 小結 311
第 16章 下載數據 312
16.1 CSV檔案格式 312
16.1.1 分析CSV檔案頭 313
16.1.2 列印檔案頭及其位置 314
16.1.3 提取並讀取數據 314
16.1.4 繪製氣溫圖表 315
16.1.5 模組datetime 316
16.1.6 在圖表中添加日期 317
16.1.7 涵蓋更長的時間 318
16.1.8 再繪製一個數據系列 319
16.1.9 給圖表區域著色 320
16.1.10 錯誤檢查 321
16.2 製作交易收盤價走勢圖:JSON格式 324
16.2.1 下載收盤價數據 324
16.2.2 提取相關的數據 326
16.2.3 將字元串轉換為數字值 327
16.2.4 繪製收盤價折線圖 329
16.2.5 時間序列特徵初探 330
16.2.6 收盤價均值 332
16.2.7 收盤價數據儀錶盤 335
16.3 小結 337
第 17章 使用API 338
17.1 使用Web API 338
17.1.1 Git和GitHub 338
17.1.2 使用API調用請求數據 339
17.1.3 安裝requests 339
17.1.4 處理API回響 340
17.1.5 處理回響字典 340
17.1.6 概述最受歡迎的倉庫 342
17.1.7 監視API的速率限制 343
17.2 使用Pygal可視化倉庫 344
17.2.1 改進Pygal圖表 346
17.2.2 添加自定義工具提示 347
17.2.3 根據數據繪圖 349
17.2.4 在圖表中添加可單擊的連結 350
17.3 Hacker News API 350
17.4 小結 353
項目3 Web應用程式 354
第 18章 Django入門 355
18.1 建立項目 355
18.1.1 制定規範 355
18.1.2 建立虛擬環境 356
18.1.3 安裝virtualenv 356
18.1.4 激活虛擬環境 357
18.1.5 安裝Django 357
18.1.6 在Django中創建項目 357
18.1.7 創建資料庫 358
18.1.8 查看項目 359
18.2 創建應用程式 360
18.2.1 定義模型 360
18.2.2 激活模型 362
18.2.3 Django管理網站 363
18.2.4 定義模型Entry 365
18.2.5 遷移模型Entry 366
18.2.6 向管理網站註冊Entry 366
18.2.7 Django shell 367
18.3 創建網頁:學習筆記主頁 369
18.3.1 映射URL 369
18.3.2 編寫視圖 371
18.3.3 編寫模板 372
18.4 創建其他網頁 373
18.4.1 模板繼承 373
18.4.2 顯示所有主題的頁面 375
18.4.3 顯示特定主題的頁面 378
18.5 小結 381
第 19章 用戶賬戶 382
19.1 讓用戶能夠輸入數據 382
19.1.1 添加新主題 382
19.1.2 添加新條目 386
19.1.3 編輯條目 390
19.2 創建用戶賬戶 392
19.2.1 應用程式users 393
19.2.2 登錄頁面 394
19.2.3 註銷 396
19.2.4 註冊頁面 397
19.3 讓用戶擁有自己的數據 400
19.3.1 使用@login_required限制訪問 400
19.3.2 將數據關聯到用戶 402
19.3.3 只允許用戶訪問自己的主題 405
19.3.4 保護用戶的主題 405
19.3.5 保護頁面edit_entry 406
19.3.6 將新主題關聯到當前用戶 406
19.4 小結 408
第 20章 設定應用程式的樣式並對其進行部署 409
20.1 設定項目“學習筆記”的樣式 409
20.1.1 應用程式django-bootstrap3 410
20.1.2 使用Bootstrap來設定項目“學習筆記”的樣式 411
20.1.3 修改base.html 411
20.1.4 使用jumbotron設定主頁的樣式 414
20.1.5 設定登錄頁面的樣式 415
20.1.6 設定new_topic頁面的樣式 416
20.1.7 設定topics頁面的樣式 417
20.1.8 設定topic頁面中條目的樣式 417
20.2 部署“學習筆記” 419
20.2.1 建立Heroku賬戶 420
20.2.2 安裝Heroku Toolbelt 420
20.2.3 安裝必要的包 420
20.2.4 創建包含包列表的檔案requirements.txt 421
20.2.5 指定Python版本 422
20.2.6 為部署到Heroku而修改settings.py 422
20.2.7 創建啟動進程的Procfile 423
20.2.8 為部署到Heroku而修改wsgi.py 423
20.2.9 創建用於存儲靜態檔案的目錄 424
20.2.10 在本地使用gunicorn伺服器 424
20.2.11 使用Git跟蹤項目檔案 425
20.2.12 推送到Heroku 426
20.2.13 在Heroku上建立資料庫 427
20.2.14 改進Heroku部署 428
20.2.15 確保項目的安全 429
20.2.16 提交並推送修改 430
20.2.17 創建自定義錯誤頁面 431
20.2.18 繼續開發 434
20.2.19 設定SECRET_KEY 434
20.2.20 將項目從Heroku刪除 434
20.3 小結 435
附錄A 安裝Python 436
附錄B 文本編輯器 441
附錄C 尋求幫助 447
附錄D 使用Git進行版本控制 451
後記 460
8.4 傳遞列表 126
8.4.1 在函式中修改列表 126
8.4.2 禁止函式修改列表 129
8.5 傳遞任意數量的實參 130
8.5.1 結合使用位置實參和任意數量實參 131
8.5.2 使用任意數量的關鍵字實參 131
8.6 將函式存儲在模組中 133
8.6.1 導入整個模組 133
8.6.2 導入特定的函式 134
8.6.3 使用as給函式指定別名 134
8.6.4 使用as給模組指定別名 135
8.6.5 導入模組中的所有函式 135
8.7 函式編寫指南 136
8.8 小結 137
第9章 類 138
9.1 創建和使用類 138
9.1.1 創建Dog類 139
9.1.2 根據類創建實例 140
9.2 使用類和實例 142
9.2.1 Car類 143
9.2.2 給屬性指定默認值 143
9.2.3 修改屬性的值 144
9.3 繼承 147
9.3.1 子類的方法__init__() 147
9.3.2 Python 2.7中的繼承 149
9.3.3 給子類定義屬性和方法 149
9.3.4 重寫父類的方法 150
9.3.5 將實例用作屬性 150
9.3.6 模擬實物 152
9.4 導入類 153
9.4.1 導入單個類 153
9.4.2 在一個模組中存儲多個類 155
9.4.3 從一個模組中導入多個類 156
9.4.4 導入整個模組 157
9.4.5 導入模組中的所有類 157
9.4.6 在一個模組中導入另一個模組 157
9.4.7 自定義工作流程 158
9.5 Python標準庫 159
9.6 類編碼風格 161
9.7 小結 161
第 10章 檔案和異常 162
10.1 從檔案中讀取數據 162
10.1.1 讀取整個檔案 162
10.1.2 檔案路徑 164
10.1.3 逐行讀取 165
10.1.4 創建一個包含檔案各行內容的列表 166
10.1.5 使用檔案的內容 166
10.1.6 包含一百萬位的大型檔案 168
10.1.7 圓周率值中包含你的生日嗎 168
10.2 寫入檔案 169
10.2.1 寫入空檔案 170
10.2.2 寫入多行 170
10.2.3 附加到檔案 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 分析文本 176
10.3.7 使用多個檔案 177
10.3.8 失敗時一聲不吭 178
10.3.9 決定報告哪些錯誤 179
10.4 存儲數據 180
10.4.1 使用json.dump()和json.load() 180
10.4.2 保存和讀取用戶生成的數據 181
10.4.3 重構 183
10.5 小結 186
第 11章 測試代碼 187
11.1 測試函式 187
11.1.1 單元測試和測試用例 188
11.1.2 可通過的測試 188
11.1.3 不能通過的測試 190
11.1.4 測試未通過時怎么辦 191
11.1.5 添加新測試 191
11.2 測試類 193
11.2.1 各種斷言方法 193
11.2.2 一個要測試的類 194
11.2.3 測試AnonymousSurvey類 195
11.2.4 方法setUp() 197
11.3 小結 199
第 二部分 項 目
項目1 外星人入侵 202
第 12章 武裝飛船 203
12.1 規劃項目 203
12.2 安裝Pygame 204
12.2.1 使用pip安裝Python包 204
12.2.2 在Linux系統中安裝Pygame 206
12.2.3 在OS X系統中安裝Pygame 207
12.2.4 在Windows系統中安裝Pygame 207
12.3 開始遊戲項目 207
12.3.1 創建Pygame視窗以及回響用戶輸入 208
12.3.2 設定背景色 209
12.3.3 創建設定類 210
12.4 添加飛船圖像 211
12.4.1 創建Ship類 212
12.4.2 在螢幕上繪製飛船 213
12.5 重構:模組game_functions 214
12.5.1 函式check_events() 214
12.5.2 函式update_screen() 215
12.6 駕駛飛船 216
12.6.1 回響按鍵 216
12.6.2 允許不斷移動 217
12.6.3 左右移動 219
12.6.4 調整飛船的速度 220
12.6.5 限制飛船的活動範圍 221
12.6.6 重構check_events() 222
12.7 簡單回顧 223
12.7.1 alien_invasion.py 223
12.7.2 settings.py 223
12.7.3 game_functions.py 223
12.7.4 ship.py 223
12.8 射擊 224
12.8.1 添加子彈設定 224
12.8.2 創建Bullet類 224
12.8.3 將子彈存儲到編組中 226
12.8.4 開火 227
12.8.5 刪除已消失的子彈 228
12.8.6 限制子彈數量 229
12.8.7 創建函式update_bullets() 229
12.8.8 創建函式fire_bullet() 230
12.9 小結 231
第 13章 外星人 232
13.1 回顧項目 232
13.2 創建第 一個外星人 233
13.2.1 創建Alien類 233
13.2.2 創建Alien實例 234
13.2.3 讓外星人出現在螢幕上 235
13.3 創建一群外星人 236
13.3.1 確定一行可容納多少個外星人 236
13.3.2 創建多行外星人 236
13.3.3 創建外星人群 237
13.3.4 重構create_fleet() 239
13.3.5 添加行 240
13.4 讓外星人群移動 242
13.4.1 向右移動外星人 243
13.4.2 創建表示外星人移動方向的設定 244
13.4.3 檢查外星人是否撞到了螢幕邊緣 244
13.4.4 向下移動外星人群並改變移動方向 245
13.5 射殺外星人 246
13.5.1 檢測子彈與外星人的碰撞 246
13.5.2 為測試創建大子彈 247
13.5.3 生成新的外星人群 248
13.5.4 提高子彈的速度 249
13.5.5 重構update_bullets() 249
13.6 結束遊戲 250
13.6.1 檢測外星人和飛船碰撞 250
13.6.2 回響外星人和飛船碰撞 251
13.6.3 有外星人到達螢幕底端 254
13.6.4 遊戲結束 255
13.7 確定應運行遊戲的哪些部分 255
13.8 小結 256
第 14章 記分 257
14.1 添加Play按鈕 257
14.1.1 創建Button類 258
14.1.2 在螢幕上繪製按鈕 259
14.1.3 開始遊戲 261
14.1.4 重置遊戲 261
14.1.5 將Play按鈕切換到非活動狀態 263
14.1.6 隱藏游標 263
14.2 提高等級 264
14.2.1 修改速度設定 264
14.2.2 重置速度 266
14.3 記分 267
14.3.1 顯示得分 267
14.3.2 創建記分牌 268
14.3.3 在外星人被消滅時更新得分 270
14.3.4 將消滅的每個外星人的點數都計入得分 271
14.3.5 提高點數 271
14.3.6 將得分圓整 272
14.3.7 最高得分 274
14.3.8 顯示等級 276
14.3.9 顯示餘下的飛船數 279
14.4 小結 283
項目2 數據可視化 284
第 15章 生成數據 285
15.1 安裝matplotlib 285
15.1.1 在Linux系統中安裝matplotlib 286
15.1.2 在OS X系統中安裝matplotlib 286
15.1.3 在Windows系統中安裝matplotlib 286
15.1.4 測試matplotlib 287
15.1.5 matplotlib畫廊 287
15.2 繪製簡單的折線圖 287
15.2.1 修改標籤文字和線條粗細 288
15.2.2 校正圖形 289
15.2.3 使用scatter()繪製散點圖並設定其樣式 290
15.2.4 使用scatter()繪製一系列點 291
15.2.5 自動計算數據 292
15.2.6 刪除數據點的輪廓 293
15.2.7 自定義顏色 293
15.2.8 使用顏色映射 294
15.2.9 自動保存圖表 295
15.3 隨機漫步 295
15.3.1 創建RandomWalk()類 296
15.3.2 選擇方向 296
15.3.3 繪製隨機漫步圖 297
15.3.4 模擬多次隨機漫步 298
15.3.5 設定隨機漫步圖的樣式 299
15.3.6 給點著色 299
15.3.7 重新繪製起點和終點 300
15.3.8 隱藏坐標軸 301
15.3.9 增加點數 301
15.3.10 調整尺寸以適合螢幕 302
15.4 使用Pygal模擬擲骰子 303
15.4.1 安裝Pygal 304
15.4.2 Pygal畫廊 304
15.4.3 創建Die類 304
15.4.4 擲骰子 305
15.4.5 分析結果 305
15.4.6 繪製直方圖 306
15.4.7 同時擲兩個骰子 307
15.4.8 同時擲兩個面數不同的骰子 309
15.5 小結 311
第 16章 下載數據 312
16.1 CSV檔案格式 312
16.1.1 分析CSV檔案頭 313
18.2.6 向管理網站註冊Entry 366
18.2.7 Django shell 367
18.3 創建網頁:學習筆記主頁 369
18.3.1 映射URL 369
18.3.2 編寫視圖 371
18.3.3 編寫模板 372
18.4 創建其他網頁 373
18.4.1 模板繼承 373
18.4.2 顯示所有主題的頁面 375
18.4.3 顯示特定主題的頁面 378
18.5 小結 381
第 19章 用戶賬戶 382
19.1 讓用戶能夠輸入數據 382
19.1.1 添加新主題 382
19.1.2 添加新條目 386
19.1.3 編輯條目 390
19.2 創建用戶賬戶 392
19.2.1 應用程式users 393
19.2.2 登錄頁面 394
19.2.3 註銷 396
19.2.4 註冊頁面 397
19.3 讓用戶擁有自己的數據 400
19.3.1 使用@login_required限制訪問 400
19.3.2 將數據關聯到用戶 402
19.3.3 只允許用戶訪問自己的主題 405
19.3.4 保護用戶的主題 405
19.3.5 保護頁面edit_entry 406
19.3.6 將新主題關聯到當前用戶 406
19.4 小結 408
第 20章 設定應用程式的樣式並對其進行部署 409
20.1 設定項目“學習筆記”的樣式 409
20.1.1 應用程式django-bootstrap3 410
20.1.2 使用Bootstrap來設定項目“學習筆記”的樣式 411
20.1.3 修改base.html 411
20.1.4 使用jumbotron設定主頁的樣式 414
20.1.5 設定登錄頁面的樣式 415
20.1.6 設定new_topic頁面的樣式 416
20.1.7 設定topics頁面的樣式 417
20.1.8 設定topic頁面中條目的樣式 417
20.2 部署“學習筆記” 419
20.2.1 建立Heroku賬戶 420
20.2.2 安裝Heroku Toolbelt 420
20.2.3 安裝必要的包 420
20.2.4 創建包含包列表的檔案requirements.txt 421
20.2.5 指定Python版本 422
20.2.6 為部署到Heroku而修改settings.py 422
20.2.7 創建啟動進程的Procfile 423
20.2.8 為部署到Heroku而修改wsgi.py 423
20.2.9 創建用於存儲靜態檔案的目錄 424
20.2.10 在本地使用gunicorn伺服器 424
20.2.11 使用Git跟蹤項目檔案 425
20.2.12 推送到Heroku 426
20.2.13 在Heroku上建立資料庫 427
20.2.14 改進Heroku部署 428
20.2.15 確保項目的安全 429
20.2.16 提交並推送修改 430
20.2.17 創建自定義錯誤頁面 431
20.2.18 繼續開發 434
20.2.19 設定SECRET_KEY 434
20.2.20 將項目從Heroku刪除 434
20.3 小結 435
附錄A 安裝Python 436
附錄B 文本編輯器 441
附錄C 尋求幫助 447
附錄D 使用Git進行版本控制 451
後記 460