Python 編程 : 從入門到實踐, 3/e Python Crash Course, 3rd Edition: A Hands-On, Project-Based Introduction to Programming

[美]埃里克·馬瑟斯(Eric Matthes)

  • Python 編程 : 從入門到實踐, 3/e-preview-1
  • Python 編程 : 從入門到實踐, 3/e-preview-2
Python 編程 : 從入門到實踐, 3/e-preview-1

買這商品的人也買了...

商品描述

本書是享譽全球的Python入門書,影響了超過250萬讀者。全書分兩部分:第一部分介紹用Python編程所必須瞭解的基本概念,包括強大的Python庫和工具,以及列表、字典、if語句、類、文件和異常、代碼測試等內容;第二部分將理論付諸實踐,講解如何開發三個項目,包括簡單的2D游戲、利用數據生成交互式的信息圖以及創建和定製簡單的Web應用,並幫助讀者解決常見編程問題和困惑。第3版進行了全面修訂:使用了文本編輯器VS Code,新增了介紹removeprefix()方法和removesuffix()方法的內容,並且在項目中利用了Matplotlib和Plotly的最新特性,等等。

作者簡介

埃里克·马瑟斯(Eric Matthes)

缔造技术图书销售奇迹的作家,作品影响了全球数百万读者。

致力于推动Python编程在全球的普及。执教计算机科学和数学25年,教学风格轻松有趣,深受学生喜爱。他对编程的热爱和丰厚的教学经验淋漓尽致地体现在了蟒蛇书《Python编程:从入门到编程》中。

蟒蛇书备受读者推崇。无论是熟练掌握其他编程语言的程序员,还是年仅10岁的萌新,都是本书的拥趸。本书在全球范围内被翻译为12种语言,累计热销超过250万册,其中仅中文版前两版的销量就超过了120万册。

目錄大綱

第 一部分 基礎知識

第 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