Python編程零基礎入門 Get Programming: Learn to code with Python

[美]安娜·貝爾(Ana Bell)

  • Python編程零基礎入門-preview-1
  • Python編程零基礎入門-preview-2
Python編程零基礎入門-preview-1

商品描述

本書是一本從零開始講解Python編程的圖書,它旨在讓零基礎讀者較快地掌握編程知識,並能使用程序來滿足自己的需要。

本書共有9個部分,除第1部分外,其餘部分都以一個階段性項目結尾。第1部分(第1~2章)介紹了學習編程的意義;第2部分(第3~6章)介紹編程的基本知識;第3部分(第7~12章)講解了字符串、元組以及與用戶交互的代碼;第4部分(第13~15章)介紹如何編寫程序來進行選擇;第5部分(第16~19章)主要涉及循環的相關知識;第6部分(第20~23章)引入了函數和模塊化的相關概念;第7部分(第24~29章)介紹了一些高級對象類型,如可變對象、列表、字典等;第8部分(第30~34章)為面向對象編程的相關知識;第9部分(第35~38章)介紹了一些可供讀者使用的現成代表庫。

作者簡介

Ana Bell博士是麻省理工学院(Massachusetts Institute of Technology,MIT)电子工程和计算机科学系的讲师。

她用Python主讲了两门计算机科学入门课程,历时已有五年之久。其中一门课程的目标人群是那些没有任何编程经验的学生,另一门课程在前一门课程的基础上进行了拓展。她非常乐于向学生讲授编程知识,并且享受学生们在学习编程过程中由于不断进步而逐渐获得的自信。用不同的方式向学生讲述同一个概念,学生能够融会贯通地理解和应用是她收获的回报。

她在普林斯顿大学时开始接触Python,并在自己的研究中应用Python解决问题。根据自己的经验,她觉得Python是一种天性自然的语言,非常易于学习和使用。

目錄大綱

第 1部分 學習編程

 

第 1章 為什麽要學習編程 3

1.1 為什麽編程很重要 3

1.1.1 編程並不僅限於專業人員 3

1.1.2 改善自己的生活 4

1.1.3 挑戰自我 4

1.2 起點與終點 5

1.3 我們的編程學習計劃 7

1.3.1 開始步驟 7

1.3.2 實踐!實踐!實踐 7

1.3.3 像程序員一樣思考 8

1.4 總結 9

 

第 2章 學習編程語言的基本原則 10

2.1 編程是一項技能 10

2.2 以烘焙為比喻 11

2.2.1 理解“烘焙一塊麵包”這個任務 11

2.2.2 尋找菜譜 12

2.2.3 用流程圖展示菜譜的可視化表現形式 13

2.2.4 使用現有的菜譜或自己創建一份菜譜 14

2.3 思考、編碼、測試、調試、重復 14

2.3.1 理解任務 16

2.3.2 任務的黑盒表現形式 16

2.3.3 編寫偽碼 18

2.4 編寫容易閱讀的代碼 18

2.4.1 使用描述性和有意義的名稱 19

2.4.2 對代碼進行註釋 19

2.5 總結 20

 

第 2部分 變量、類型、表達式和語句

 

第3章 介紹Python編程語言 23

3.1 安裝Python 23

3.1.1 什麽是Python 24

3.1.2 下載Python 3.5版本 24

3.1.3 Anaconda Python發布包 24

3.1.4 集成開發環境 24

3.2 設置工作空間 26

3.2.1 IPython控制台 27

3.2.2 文件編輯器 29

3.3 總結 31

 

第4章 變量和表達式:為對象賦予名稱和值 32

4.1 為對象提供名稱 33

4.1.1 數學與編程 33

4.1.2 電腦可以做什麽?不可以做什麽 34

4.2 變量 35

4.2.1 對象就是可以進行操作的物品 35

4.2.2 對象具有名稱 35

4.2.3 允許什麽樣的對象名稱 36

4.2.4 創建變量 37

4.2.5 更新變量 38

4.3 總結 40

4.4 章末檢測 40

 

第5章 對象的類型和代碼的語句 41

5.1 對象的類型 42

5.2 編程中對象的基本類型 42

5.2.1 整數 42

5.2.2 表示小數的浮點數 43

5.2.3 表示真/假的布爾值 44

5.2.4 表示字符序列的字符串 44

5.2.5 空值 44

5.3 使用基本類型的數據值 45

5.3.1 表達式的構件 45

5.3.2 不同類型之間的轉換 46

5.3.3 數學運算對對象類型的影響 46

5.4 總結 48

 

第6章 階段性項目:第 一個Python程序—時分轉換 49

6.1 思考、編碼、測試、調試、重復 50

6.2 分解任務 50

6.2.1 設置輸入 51

6.2.2 設置輸出 51

6.3 實現轉換公式 51

6.3.1 多少小時 51

6.3.2 多少分鐘 52

6.4 第 一個Python程序:解決方案一 52

6.5 第 一個Python程序:解決方案二 54

6.6 總結 55

6.7 章末檢測 55

 

第3部分 字符串、元組以及與用戶的交互

 

第7章 介紹字符串對象:字符序列 59

7.1 字符串就是字符序列 60

7.2 字符串的基本操作 60

7.2.1 創建字符串對象 60

7.2.2 理解字符串的索引 61

7.2.3 理解字符串的截取 62

7.3 字符串對象的其他操作 63

7.3.1 使用len()獲取字符串的字符數量 63

7.3.2 用upper()和lower()進行字母大小寫的轉換 64

7.4 總結 65

7.5 章末檢測 65

 

第8章 字符串的高級操作 66

8.1 與子字符串有關的操作 67

8.1.1 使用find()在字符串中查找一個特定的子字符串 67

8.1.2 用“in”判斷字符串中是否包含某個子字符串 68

8.1.3 用count()獲取一個子字符串的出現次數 69

8.1.4 用replace()替換子字符串 69

8.2 數學操作 70

8.3 總結 71

8.4 章末檢測 71

 

第9章 簡單的錯誤消息 72

9.1 輸入語句並嘗試執行 72

9.2 理解字符串錯誤消息 73

9.3 總結 74

9.4 章末檢測 74

 

第 10章 元組對象:任意類型的對象序列 75

10.1 元組就是數據序列 76

10.2 理解對元組的操作 77

10.2.1 用len()獲取元組的長度 77

10.2.2 用[]獲取元組索引以及截取元組的部分內容 77

10.2.3 執行數學操作 79

10.2.4 在元組內部交換對象 79

10.3 總結 80

10.4 章末檢測 80

 

第 11章 與用戶的交互 81

11.1 顯示輸出 82

11.1.1 打印表達式 82

11.1.2 打印多個對象 83

11.2 獲取用戶的輸入 83

11.2.1 提示用戶進行輸入 84

11.2.2 讀取輸入 84

11.2.3 把輸入存儲在變量中 85

11.2.4 把用戶的輸入轉換為不同類型 85

11.2.5 要求更多的輸入 86

11.3 總結 87

11.4 章末檢測 87

 

第 12章 階段性項目:姓名的混搭 88

12.1 理解問題陳述 89

12.1.1 畫出程序的基本結構 89

12.1.2 設計例子 90

12.1.3 把問題抽象化為偽碼 90

12.2 分割名字和姓氏 91

12.2.1 尋找名字和姓氏之間的空格 91

12.2.2 使用變量保存經過處理的值 91

12.2.3 對到目前為止完成的工作進行測試 92

12.3 存儲所有名字的一半 93

12.4 對名字的一半進行組合 94

12.5 總結 95

 

第4部分 在程序中做出選擇

 

第 13章 在程序中引入選擇機制 99

13.1 根據條件做出選擇 100

13.1.1 是否問題和真假語句 100

13.1.2 在語句中添加條件 101

13.2 編寫代碼做出選擇 101

13.2.1 一個例子 102

13.2.2 做出選擇的代碼:基本方式 103

13.3 程序的結構變化 103

13.3.1 做出多個選擇 104

13.3.2 根據另一個選擇結果做出選擇 104

13.3.3 一個更加復雜的嵌套的條件的例子 106

13.4 總結 108

13.5 章末檢測 108

 

第 14章 做出更復雜的選擇 109

14.1 組合多個條件 110

14.1.1 由真/假表達式組成的條件 111

14.1.2 操作符的優先級規則 112

14.2 選擇需要執行的代碼行 114

14.2.1 執行某個操作 114

14.2.2 綜合討論 117

14.2.3 對代碼塊進行的思考 119

14.3 總結 120

14.4 章末檢測 121

 

第 15章 階段性項目:冒險游戲 122

15.1 制定游戲規則 122

15.2 創建不同的路徑 123

15.3 更多的選項?可以,盡管嘗試 124

15.4 總結 126

 

 

第5部分 重復執行任務

 

第 16章 用循環重復任務 129

16.1 重復一個任務 130

16.1.1 在程序中引入非線性結構 130

16.1.2 無限循環 131

16.2 循環一定的次數 132

16.3 循環N次 134

16.3.1 常見的0到N–1的循環 135

16.3.2 展開循環 135

16.4 總結 136

16.5 章末檢測 136

 

第 17章 自定義的循環 137

17.1 自定義的循環 138

17.2 對字符串進行循環 139

17.3 總結 141

17.4 章末檢測 141

 

第 18章 在條件滿足時一直重復任務 143

18.1 在條件為真時保持循環 144

18.1.1 通過循環進行猜數 144

18.1.2 while循環 145

18.1.3 無限循環 146

18.2 for循環和while循環的比較 147

18.3 對循環進行控制 149

18.3.1 提前退出循環 149

18.3.2 回到循環的開始位置 150

18.4 總結 152

18.5 章末檢測 152

 

第 19章 階段性項目:拼字游戲(藝術版) 153

19.1 理解問題陳述 154

19.1.1 更改所有合法單詞的表示形式 154

19.1.2 用給定的字母卡組建一個合法的單詞 156

19.2 把代碼劃分為代碼段 159

19.3 總結 161

 

 

第6部分 將代碼組織為可復用的代碼塊

 

第 20章 創建持久性的程序 165

20.1 把一個較大的任務分解為更小的任務 166

20.1.1 在線訂購一件商品 166

20.1.2 理解主要概念 168

20.2 在編程中引入黑盒代碼 169

20.2.1 使用代碼模塊 169

20.2.2 代碼的抽象化 169

20.2.3 復用代碼 170

20.3 子任務存在於它們自己的環境中 172

20.4 總結 173

20.5 章末檢測 174

第 21章 用函數實現模塊化和抽象 175

21.1 編寫函數 176

21.1.1 函數基礎知識:函數的輸入 177

21.1.2 函數基礎知識:函數執行的操作 178

21.1.3 函數基礎知識:函數的返回信息 178

21.2 使用函數 179

21.2.1 返回多個值 180

21.2.2 沒有return語句的函數 182

21.3 編寫函數說明書 184

21.4 總結 184

21.5 章末檢測 185

 

第 22章 函數的高級操作 186

22.1 從兩個角度思考函數 187

22.1.1 函數編寫者的角度 187

22.1.2 函數使用者的角度 187

22.2 函數的作用域 188

22.2.1 簡單的作用域例子 188

22.2.2 作用域規則 188

22.3 嵌套函數 192

22.4 把函數作為參數傳遞 193

22.5 返回一個函數 194

22.6 總結 195

22.7 章末檢測 195

 

第 23章 階段性項目:對朋友進行分析 197

23.1 讀取文件 198

23.1.1 文件格式 198

23.1.2 換行符 198

23.1.3 刪除換行符 199

23.1.4 使用元組存儲信息 200

23.1.5 返回什麽 200

23.2 對用戶的輸入進行凈化 201

23.3 測試和調試到目前為止所編寫的代碼 202

23.3.1 文件對象 202

23.3.2 編寫一個包含姓名和電話號碼的文本文件 202

23.3.3 打開文件以進行讀取 203

23.4 重復使用函數 203

23.5 分析信息 204

23.5.1 規範 204

23.5.2 幫助函數 205

23.6 總結 208

 

 

第7部分 使用可變數據類型

 

第 24章 可變對象和不可變對象 211

24.1 不可變對象 212

24.2 對可變性的需求 214

24.3 總結 216

24.4 章末檢測 216

 

第 25章 對列表進行操作 217

25.1 列表與元組的比較 218

25.2 創建列表和獲取特定位置的元素 219

25.3 對元素進行計數以及獲取元素的位置 220

25.4 在列表中添加元素:append、insert和extend 221

25.4.1 使用append 221

25.4.2 使用insert 222

25.4.3 使用extend 222

25.5 從列表中移除元素:pop 223

25.6 更改元素的值 224

25.7 總結 225

25.8 章末檢測 226

 

第 26章 列表的高級操作 227

26.1 排序和反轉列表 228

26.2 列表的列表 229

26.3 把字符串轉換為列表 230

26.4 列表的應用 231

26.4.1 堆棧 231

26.4.2 隊列 232

26.5 總結 233

26.6 章末檢測 233

 

第 27章 字典作為對象之間的映射 234

27.1 創建字典、鍵和值 236

27.2 在字典中添加鍵值對 237

27.3 從字典中刪除鍵值對 238

27.4 獲取字典中所有的鍵和值 239

27.5 為什麽應該使用字典 241

27.5.1 使用頻率字典進行計數 241

27.5.2 創建非常規的字典 242

27.6 總結 243

27.7 章末檢測 243

 

第 28章 別名以及復制列表和字典 245

28.1 使用對象的別名 246

28.1.1 不可變對象的別名 246

28.1.2 可變對象的別名 247

28.1.3 可變對象作為函數的參數 249

28.2 創建可變對象的副本 250

28.2.1 復制可變對象的命令 250

28.2.2 獲取有序列表的副本 251

28.2.3 對可變對象進行迭代時需要小心 252

28.2.4 為什麽要存在別名 253

28.3 總結 254

28.4 章末檢測 254

 

第 29章 階段性項目:文檔的相似度 255

29.1 把問題分解為不同的子任務 256

29.2 讀取文件信息 256

29.3 保存文件中的所有單詞 257

29.4 把單詞映射到它們的頻率 259

29.5 使用相似度比較兩個文檔 260

29.6 最終的整合 261

29.7 一個可能的擴展 262

29.8 總結 263

 

第8部分 使用面向對象編程創建自己的對象類型

 

第30章 創建自己的對象類型 267

30.1 為什麽需要新類型 268

30.2 什麽組成了一個對象 269

30.2.1 對象的屬性 269

30.2.2 對象的行為 270

30.3 使用點號記法 270

30.4 總結 271

 

第31章 為對象類型創建類 272

31.1 用類實現新的對象類型 273

31.2 數據屬性作為對象的屬性 273

31.2.1 用_ _init_ _初始化對象 274

31.2.2 在_ _init_ _內部創建對象屬性 274

31.3 方法作為對象的操作和行為 275

31.4 使用定義的對象類型 276

31.5 在_ _init_ _中創建帶參數的類 277

31.6 作用於類名而不是對象的點號記法 278

31.7 總結 279

31.8 章末檢測 279

 

第32章 使用自己的對象類型 280

32.1 定義堆棧對象 281

32.1.1 選擇數據屬性 281

32.1.2 實現Stack類的方法 282

32.2 使用Stack對象 283

32.2.1 創建一個煎餅堆棧 283

32.2.2 創建一個圓堆棧 284

32.3 總結 287

32.4 章末檢測 287

 

第33章 對類進行自定義 288

33.1 覆寫一個特殊的方法 289

33.2 在自己的類中覆寫print()方法 291

33.3 背後發生的事情 292

33.4 可以對類做什麽 293

33.5 總結 294

33.6 章末檢測 294

 

第34章 階段性項目:牌類游戲 295

34.1 使用已經存在的類 296

34.2 詳細分析游戲規則 296

34.3 定義Player類 297

34.4 定義CardDeck類 298

34.5 模擬牌類游戲 299

34.5.1 設置對象 299

34.5.2 模擬游戲中的回合 300

34.6 用類實現模塊化和抽象 301

34.7 總結 302

 

第9部分 使用程序庫完善自己的程序

 

第35章 實用的程序庫 305

35.1 導入程序庫 306

35.2 用math庫進行數學運算 308

35.3 用random庫操作隨機數 309

35.3.1 隨機化的列表 309

35.3.2 模擬概率游戲 310

35.3.3 使用種子重復結果 311

35.4 用time庫對程序進行計時 312

35.4.1 使用時鐘 312

35.4.2 使程序暫停運行 312

35.5 總結 313

35.6 章末檢測 313

 

第36章 測試和調試程序 314

36.1 使用unittest程序庫 315

36.2 將程序與測試分離 316

36.3 調試代碼 319

36.4 總結 321

36.5 章末檢測 322

 

第37章 圖形用戶接口程序庫 323

37.1 一個圖形用戶接口庫 323

37.2 使用tkinter庫設置程序 324

37.3 添加部件 325

37.4 添加事件處理函數 327

37.5 總結 329

37.6 章末檢測 330

 

第38章 階段性項目:追逐游戲 331

38.1 確認問題的組成部分 332

38.2 在窗口中創建兩個形狀 332

38.3 在畫布中移動形狀 335

38.4 檢測形狀之間的碰撞 337

38.5 可能的擴展 338

38.6 總結 339

 

附錄A 各章習題的答案 340

 

附錄B Python語法摘要 381

 

附錄C 有趣的Python程序庫 384