《Python程序設(shè)計(jì) 第3版》是面向大學(xué)計(jì)算機(jī)科學(xué)專業(yè)的教材。本書以Python語言為工具,采用相當(dāng)傳統(tǒng)的方法,強(qiáng)調(diào)解決問題、設(shè)計(jì)和編程是計(jì)算機(jī)科學(xué)的核心技能。
全書共13章,此外,還包含兩個(gè)附錄。第 1章到第5章介紹計(jì)算機(jī)與程序、編寫簡(jiǎn)單程序、數(shù)字計(jì)算、對(duì)象和圖形、字符串處理等基礎(chǔ)知識(shí)。第6章到第8章介紹函數(shù)、判斷結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和布爾值等話題。第9章到第 13章著重介紹一些較為高檔的程序設(shè)計(jì)方法,包括模擬與設(shè)計(jì)、類、數(shù)據(jù)集合、面向?qū)ο笤O(shè)計(jì)、算法設(shè)計(jì)與遞歸等。附錄部分給出了Python快速參考和術(shù)語表。每一章的末尾配有豐富的練習(xí),包括復(fù)習(xí)問題、討論和編程聯(lián)系等多種形式,幫助讀者鞏固該章的知識(shí)和技能。
《Python程序設(shè)計(jì) 第3版》特色鮮明、示例生動(dòng)有趣、內(nèi)容易讀易學(xué),適合Python入門程序員閱讀,也適合高校計(jì)算機(jī)專業(yè)的教師和學(xué)生參考。
John Zelle是美國(guó)Wartburg大學(xué)數(shù)學(xué)和計(jì)算機(jī)系教授。他負(fù)責(zé)教授Python程序設(shè)計(jì)課程,并且結(jié)合多年的教學(xué)經(jīng)驗(yàn)編寫了本書,在美國(guó)高校受到普遍的歡迎。他還從事VR、AI等方面的研究,發(fā)表了一些機(jī)器學(xué)習(xí)方面的論文。
第 1章 計(jì)算機(jī)和程序 1
學(xué)習(xí)目標(biāo) 1
1.1 通用機(jī)器 1
1.2 程序的力量 2
1.3 什么是計(jì)算機(jī)科學(xué) 2
1.4 硬件基礎(chǔ) 3
1.5 編程語言 4
1.6 Python的“魔法” 6
1.7 Python程序內(nèi)部 10
1.8 混沌與計(jì)算機(jī) 12
1.9 小結(jié) 13
1.10 練習(xí) 14
復(fù)習(xí)問題 14
第 2章 編寫簡(jiǎn)單程序 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 表達(dá)式 20
2.4 輸出語句 22
2.5 賦值語句 23
2.5.1 簡(jiǎn)單賦值 23
2.5.2 賦值輸入 24
2.5.3 同時(shí)賦值 26
2.6 確定循環(huán) 27
2.7 示例程序:終值 29
2.8 小結(jié) 31
2.9 練習(xí) 32
復(fù)習(xí)問題 32
第3章 數(shù)字計(jì)算 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 計(jì)算機(jī)算術(shù)的局限性 44
3.6 小結(jié) 46
3.7 練習(xí) 47
復(fù)習(xí)問題 47
第4章 對(duì)象和圖形 52
學(xué)習(xí)目標(biāo) 52
4.1 概述 52
4.2 對(duì)象的目標(biāo) 53
4.3 簡(jiǎn)單圖形編程 53
4.4 使用圖形對(duì)象 56
4.5 繪制終值 60
4.6 選擇坐標(biāo) 64
4.7 交互式圖形 66
4.7.1 獲取鼠標(biāo)點(diǎn)擊 67
4.7.2 處理文本輸入 68
4.8 graphics模塊參考 70
4.8.1 GraphWin對(duì)象 70
4.8.2 圖形對(duì)象 71
4.8.3 Entry對(duì)象 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 簡(jiǎn)單字符串處理 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 更好的零錢計(jì)數(shù)器 99
5.9 文件處理 99
5.9.1 多行字符串 100
5.9.2 文件處理 100
5.9.3 示例程序:批處理
用戶名 103
5.9.4 文件對(duì)話框(可選) 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ù):令人興奮的
細(xì)節(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 簡(jiǎn)單判斷 133
7.1.1 示例:溫度警告 133
7.1.2 形成簡(jiǎn)單條件 135
7.1.3 示例:條件程序執(zhí)行 136
7.2 兩路判斷 137
7.3 多路判斷 140
7.4 異常處理 142
7.5 設(shè)計(jì)研究:三者大 144
7.5.1 策略1:比較每個(gè)值和
所有其他值 145
7.5.2 策略2:判斷樹 146
7.5.3 策略3:順序處理 147
7.5.4 策略4:使用Python 148
7.5.5 一些經(jīng)驗(yàn) 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 布爾值計(jì)算 161
8.4.1 布爾運(yùn)算符 161
8.4.2 布爾代數(shù) 163
8.5 其他常見結(jié)構(gòu) 165
8.5.1 后測(cè)試循環(huán) 165
8.5.2 循環(huán)加一半 166
8.5.3 布爾表達(dá)式作為判斷 166
8.6 示例:一個(gè)簡(jiǎn)單的事件循環(huán) 169
8.7 小結(jié) 172
8.8 練習(xí) 173
復(fù)習(xí)問題 173
第9章 模擬與設(shè)計(jì) 177
學(xué)習(xí)目標(biāo) 177
9.1 模擬短柄壁球 177
9.1.1 一個(gè)模擬問題 177
9.1.2 分析與規(guī)格說明 178
9.2 偽隨機(jī)數(shù) 178
9.3 自頂向下的設(shè)計(jì) 180
9.3.1 頂層設(shè)計(jì) 180
9.3.2 關(guān)注點(diǎn)分離 182
9.3.3 第 二層設(shè)計(jì) 182
9.3.4 設(shè)計(jì)simNGames 183
9.3.5 第三層設(shè)計(jì) 184
9.3.6 整理完成 186
9.3.7 設(shè)計(jì)過程總結(jié) 188
9.4 自底向上的實(shí)現(xiàn) 188
9.4.1 單元測(cè)試 188
9.4.2 模擬結(jié)果 189
9.5 其他設(shè)計(jì)技術(shù) 190
9.5.1 原型與螺旋式開發(fā) 190
9.5.2 設(shè)計(jì)的藝術(shù) 191
9.6 小結(jié) 191
9.7 練習(xí) 192
復(fù)習(xí)問題 192
第 10章 定義類 196
學(xué)習(xí)目標(biāo) 196
10.1 對(duì)象的快速復(fù)習(xí) 196
10.2 示例程序:炮彈 197
10.2.1 程序規(guī)格說明 197
10.2.2 設(shè)計(jì)程序 197
10.2.3 程序模塊化 199
10.3 定義新類 200
10.3.1 示例:多面骰子 201
10.3.2 示例:Projectile類 203
10.4 用類數(shù)據(jù)處理 205
10.5 對(duì)象和封裝 207
10.5.1 封裝有用的抽象 207
10.5.2 將類放在模塊中 208
10.5.3 模塊文檔 208
10.5.4 使用多個(gè)模塊 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 動(dòng)畫炮彈 216
10.7.1 繪制動(dòng)畫窗口 217
10.7.2 創(chuàng)建ShotTracker 218
10.7.3 創(chuàng)建輸入對(duì)話框 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 示例問題:簡(jiǎn)單統(tǒng)計(jì) 227
11.2 應(yīng)用列表 228
11.2.1 列表和數(shù)組 229
11.2.2 列表操作 229
11.2.3 用列表進(jìn)行統(tǒng)計(jì) 231
11.3 記錄的列表 235
11.4 用列表和類設(shè)計(jì) 237
11.5 案例分析:Python計(jì)算器 241
11.5.1 計(jì)算器作為對(duì)象 241
11.5.2 構(gòu)建界面 241
11.5.3 處理按鈕 243
11.6 案例研究:更好的炮彈動(dòng)畫 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è)計(jì) 262
學(xué)習(xí)目標(biāo) 262
12.1 OOD的過程 262
12.2 案例研究:壁球模擬 263
12.2.1 候選對(duì)象和方法 264
12.2.2 實(shí)現(xiàn)SimStats 265
12.2.3 實(shí)現(xiàn)RBallGame 266
12.2.4 實(shí)現(xiàn)Player 267
12.2.5 完整程序 268
12.3 案例研究:骰子撲克 270
12.3.1 程序規(guī)格說明 271
12.3.2 識(shí)別候選對(duì)象 271
12.3.3 實(shí)現(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è)計(jì)與遞歸 287
學(xué)習(xí)目標(biāo) 287
13.1 查找 287
13.1.1 簡(jiǎn)單的查找問題 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 停機(jī)問題 306
13.4.3 結(jié)論 308
13.5 小結(jié) 308
13.6 練習(xí) 309
復(fù)習(xí)問題 309
附錄A Python快速參考 314
附錄B 術(shù)語表 323