《Python程序設(shè)計 第3版》是面向大學(xué)計算機科學(xué)專業(yè)的教材。本書以Python語言為工具,采用相當(dāng)傳統(tǒng)的方法,強調(diào)解決問題、設(shè)計和編程是計算機科學(xué)的核心技能。
全書共13章,此外,還包含兩個附錄。第 1章到第5章介紹計算機與程序、編寫簡單程序、數(shù)字計算、對象和圖形、字符串處理等基礎(chǔ)知識。第6章到第8章介紹函數(shù)、判斷結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和布爾值等話題。第9章到第 13章著重介紹一些較為高檔的程序設(shè)計方法,包括模擬與設(shè)計、類、數(shù)據(jù)集合、面向?qū)ο笤O(shè)計、算法設(shè)計與遞歸等。附錄部分給出了Python快速參考和術(shù)語表。每一章的末尾配有豐富的練習(xí),包括復(fù)習(xí)問題、討論和編程聯(lián)系等多種形式,幫助讀者鞏固該章的知識和技能。
《Python程序設(shè)計 第3版》特色鮮明、示例生動有趣、內(nèi)容易讀易學(xué),適合Python入門程序員閱讀,也適合高校計算機專業(yè)的教師和學(xué)生參考。
John Zelle是美國Wartburg大學(xué)數(shù)學(xué)和計算機系教授。他負責(zé)教授Python程序設(shè)計課程,并且結(jié)合多年的教學(xué)經(jīng)驗編寫了本書,在美國高校受到普遍的歡迎。他還從事VR、AI等方面的研究,發(fā)表了一些機器學(xué)習(xí)方面的論文。
第 1章 計算機和程序 1
學(xué)習(xí)目標(biāo) 1
1.1 通用機器 1
1.2 程序的力量 2
1.3 什么是計算機科學(xué) 2
1.4 硬件基礎(chǔ) 3
1.5 編程語言 4
1.6 Python的“魔法” 6
1.7 Python程序內(nèi)部 10
1.8 混沌與計算機 12
1.9 小結(jié) 13
1.10 練習(xí) 14
復(fù)習(xí)問題 14
第 2章 編寫簡單程序 17
學(xué)習(xí)目標(biāo) 17
2.1 軟件開發(fā)過程 17
2.2 示例程序:溫度轉(zhuǎn)換器 18
2.3 程序要素 19
2.3.1 名稱 19
2.3.2 表達式 20
2.4 輸出語句 22
2.5 賦值語句 23
2.5.1 簡單賦值 23
2.5.2 賦值輸入 24
2.5.3 同時賦值 26
2.6 確定循環(huán) 27
2.7 示例程序:終值 29
2.8 小結(jié) 31
2.9 練習(xí) 32
復(fù)習(xí)問題 32
第3章 數(shù)字計算 35
學(xué)習(xí)目標(biāo) 35
3.1 數(shù)值數(shù)據(jù)類型 35
3.2 類型轉(zhuǎn)換和舍入 38
3.3 使用math庫 40
3.4 累積結(jié)果:階乘 42
3.5 計算機算術(shù)的局限性 44
3.6 小結(jié) 46
3.7 練習(xí) 47
復(fù)習(xí)問題 47
第4章 對象和圖形 52
學(xué)習(xí)目標(biāo) 52
4.1 概述 52
4.2 對象的目標(biāo) 53
4.3 簡單圖形編程 53
4.4 使用圖形對象 56
4.5 繪制終值 60
4.6 選擇坐標(biāo) 64
4.7 交互式圖形 66
4.7.1 獲取鼠標(biāo)點擊 67
4.7.2 處理文本輸入 68
4.8 graphics模塊參考 70
4.8.1 GraphWin對象 70
4.8.2 圖形對象 71
4.8.3 Entry對象 74
4.8.4 顯示圖像 74
4.8.5 生成顏色 75
4.8.6 控制顯示更新(高檔) 75
4.9 小結(jié) 76
4.10 練習(xí) 76
復(fù)習(xí)問題 76
第5章 序列:字符串、列表和文件 81
學(xué)習(xí)目標(biāo) 81
5.1 字符串?dāng)?shù)據(jù)類型 81
5.2 簡單字符串處理 84
5.3 列表作為序列 86
5.4 字符串表示和消息編碼 87
5.4.1 字符串表示 87
5.4.2 編寫編碼器 88
5.5 字符串方法 89
5.5.1 編寫解碼器 89
5.5.2 更多字符串方法 92
5.6 列表也有方法 93
5.7 從編碼到加密 94
5.8 輸入/輸出作為字符串操作 95
5.8.1 示例應(yīng)用程序:
日期轉(zhuǎn)換 95
5.8.2 字符串格式化 97
5.8.3 更好的零錢計數(shù)器 99
5.9 文件處理 99
5.9.1 多行字符串 100
5.9.2 文件處理 100
5.9.3 示例程序:批處理
用戶名 103
5.9.4 文件對話框(可選) 103
5.10 小結(jié) 105
5.11 練習(xí) 106
復(fù)習(xí)問題 106
第6章 定義函數(shù) 111
學(xué)習(xí)目標(biāo) 111
6.1 函數(shù)的功能 111
6.2 函數(shù)的非正式討論 112
6.3 帶有函數(shù)的終值程序 115
6.4 函數(shù)和參數(shù):令人興奮的
細節(jié) 116
6.5 返回值的函數(shù) 119
6.6 修改參數(shù)的函數(shù) 122
6.7 函數(shù)和程序結(jié)構(gòu) 126
6.8 小結(jié) 128
6.9 練習(xí) 129
復(fù)習(xí)問題 129
第7章 判斷結(jié)構(gòu) 133
學(xué)習(xí)目標(biāo) 133
7.1 簡單判斷 133
7.1.1 示例:溫度警告 133
7.1.2 形成簡單條件 135
7.1.3 示例:條件程序執(zhí)行 136
7.2 兩路判斷 137
7.3 多路判斷 140
7.4 異常處理 142
7.5 設(shè)計研究:三者大 144
7.5.1 策略1:比較每個值和
所有其他值 145
7.5.2 策略2:判斷樹 146
7.5.3 策略3:順序處理 147
7.5.4 策略4:使用Python 148
7.5.5 一些經(jīng)驗 148
7.6 小結(jié) 149
7.7 練習(xí) 149
復(fù)習(xí)問題 149
第8章 循環(huán)結(jié)構(gòu)和布爾值 153
學(xué)習(xí)目標(biāo) 153
8.1 for循環(huán):快速回顧 153
8.2 不定循環(huán) 154
8.3 常見循環(huán)模式 155
8.3.1 交互式循環(huán) 155
8.3.2 哨兵循環(huán) 156
8.3.3 文件循環(huán) 158
8.3.4 嵌套循環(huán) 160
8.4 布爾值計算 161
8.4.1 布爾運算符 161
8.4.2 布爾代數(shù) 163
8.5 其他常見結(jié)構(gòu) 165
8.5.1 后測試循環(huán) 165
8.5.2 循環(huán)加一半 166
8.5.3 布爾表達式作為判斷 166
8.6 示例:一個簡單的事件循環(huán) 169
8.7 小結(jié) 172
8.8 練習(xí) 173
復(fù)習(xí)問題 173
第9章 模擬與設(shè)計 177
學(xué)習(xí)目標(biāo) 177
9.1 模擬短柄壁球 177
9.1.1 一個模擬問題 177
9.1.2 分析與規(guī)格說明 178
9.2 偽隨機數(shù) 178
9.3 自頂向下的設(shè)計 180
9.3.1 頂層設(shè)計 180
9.3.2 關(guān)注點分離 182
9.3.3 第 二層設(shè)計 182
9.3.4 設(shè)計simNGames 183
9.3.5 第三層設(shè)計 184
9.3.6 整理完成 186
9.3.7 設(shè)計過程總結(jié) 188
9.4 自底向上的實現(xiàn) 188
9.4.1 單元測試 188
9.4.2 模擬結(jié)果 189
9.5 其他設(shè)計技術(shù) 190
9.5.1 原型與螺旋式開發(fā) 190
9.5.2 設(shè)計的藝術(shù) 191
9.6 小結(jié) 191
9.7 練習(xí) 192
復(fù)習(xí)問題 192
第 10章 定義類 196
學(xué)習(xí)目標(biāo) 196
10.1 對象的快速復(fù)習(xí) 196
10.2 示例程序:炮彈 197
10.2.1 程序規(guī)格說明 197
10.2.2 設(shè)計程序 197
10.2.3 程序模塊化 199
10.3 定義新類 200
10.3.1 示例:多面骰子 201
10.3.2 示例:Projectile類 203
10.4 用類數(shù)據(jù)處理 205
10.5 對象和封裝 207
10.5.1 封裝有用的抽象 207
10.5.2 將類放在模塊中 208
10.5.3 模塊文檔 208
10.5.4 使用多個模塊 210
10.6 控件 210
10.6.1 示例程序:擲骰
子程序 211
10.6.2 創(chuàng)建按鈕 211
10.6.3 構(gòu)建骰子類 213
10.6.4 主程序 215
10.7 動畫炮彈 216
10.7.1 繪制動畫窗口 217
10.7.2 創(chuàng)建ShotTracker 218
10.7.3 創(chuàng)建輸入對話框 219
10.7.4 主事件循環(huán) 220
10.8 小結(jié) 221
10.9 練習(xí) 222
復(fù)習(xí)問題 222
第 11章 數(shù)據(jù)集合 227
學(xué)習(xí)目標(biāo) 227
11.1 示例問題:簡單統(tǒng)計 227
11.2 應(yīng)用列表 228
11.2.1 列表和數(shù)組 229
11.2.2 列表操作 229
11.2.3 用列表進行統(tǒng)計 231
11.3 記錄的列表 235
11.4 用列表和類設(shè)計 237
11.5 案例分析:Python計算器 241
11.5.1 計算器作為對象 241
11.5.2 構(gòu)建界面 241
11.5.3 處理按鈕 243
11.6 案例研究:更好的炮彈動畫 246
11.6.1 創(chuàng)建發(fā)射器 246
11.6.2 追蹤多次射擊 248
11.7 無順序集合 251
11.7.1 字典基礎(chǔ) 251
11.7.2 字典操作 252
11.7.3 示例程序:詞頻 253
11.8 小結(jié) 257
11.9 練習(xí) 257
復(fù)習(xí)問題 257
第 12章 面向?qū)ο笤O(shè)計 262
學(xué)習(xí)目標(biāo) 262
12.1 OOD的過程 262
12.2 案例研究:壁球模擬 263
12.2.1 候選對象和方法 264
12.2.2 實現(xiàn)SimStats 265
12.2.3 實現(xiàn)RBallGame 266
12.2.4 實現(xiàn)Player 267
12.2.5 完整程序 268
12.3 案例研究:骰子撲克 270
12.3.1 程序規(guī)格說明 271
12.3.2 識別候選對象 271
12.3.3 實現(xiàn)模型 272
12.3.4 基于文本的UI 275
12.3.5 開發(fā)GUI 277
12.4 OO概念 282
12.4.1 封裝 282
12.4.2 多態(tài) 283
12.4.3 繼承 283
12.5 小結(jié) 284
12.6 練習(xí) 285
復(fù)習(xí)問題 285
第 13章 算法設(shè)計與遞歸 287
學(xué)習(xí)目標(biāo) 287
13.1 查找 287
13.1.1 簡單的查找問題 287
13.1.2 策略1:線性查找 288
13.1.3 策略2:二分查找 288
13.1.4 比較算法 289
13.2 遞歸問題解決 290
13.2.1 遞歸定義 291
13.2.2 遞歸函數(shù) 292
13.2.3 示例:字符串反轉(zhuǎn) 293
13.2.4 示例:重組詞 294
13.2.5 示例:快速指數(shù) 295
13.2.6 示例:二分查找 296
13.2.7 遞歸與迭代 296
13.3 排序算法 298
13.3.1 天真的排序:選擇
排序 298
13.3.2 分而治之:歸并排序 299
13.3.3 排序比較 301
13.4 難題 303
13.4.1 漢諾依塔 303
13.4.2 停機問題 306
13.4.3 結(jié)論 308
13.5 小結(jié) 308
13.6 練習(xí) 309
復(fù)習(xí)問題 309
附錄A Python快速參考 314
附錄B 術(shù)語表 323