相關主題
商品描述
本書是美國德保羅大學的精品課程教材,它與傳統程序設計書籍最大的不同在於,不僅講授編程知識,而且重視計算思維的培養。此外還涵蓋了豐富的計算機科學主題以及當前的熱門技術,有助於學生全面瞭解不同的計算領域,並掌握開發與Web和數據庫交互的現代應用程序的能力。
主要特點
從Python開始學習計算機科學。專為第一門程序設計課程而編寫,充分利用Python語言的易學性和易用性,搭建了平緩的學習曲線,同時使用Python庫開展多領域的計算機科學研究,並將重點聚焦於現代應用程序開發上。
“廣度優先”的內容組織方式。以計算機科學導論開篇,然後講解Python基礎知識、算法設計、問題求解和應用程序開發,最後介紹高級應用。精心設計篇章佈局,在最合適的時刻引入最有效的工具,而非堆砌概念。
免費的代碼和豐富的實踐案例。學生通過編程實踐可快速發現問題並提升解決能力,案例包括Web爬蟲、搜索引擎和數據挖掘等主題,涉及遞歸、深度優先搜索、MapReduce框架、圖形用戶界面、HTML解析器等概念和工具
目錄大綱
出版者的話
譯者序
前言
第1章 計算機科學導論 1
1.1 計算機科學 1
1.1.1 計算機專業人員的工作 1
1.1.2 模型、算法和程序 2
1.1.3 必備的工具 3
1.1.4 什麼是計算機科學 3
1.2 計算機系統 3
1.2.1 計算機硬件 3
1.2.2 操作系統 4
1.2.3 網絡和網絡協議 5
1.2.4 程序開發語言 5
1.2.5 軟件庫 6
1.3 Python程序設計語言 6
1.3.1 Python簡史 6
1.3.2 構建Python開發環境 7
1.4 計算思維 7
1.4.1 一個示例問題 8
1.4.2 抽象和建模 8
1.4.3 算法 9
1.4.4 數據類型 9
1.4.5 賦值語句和執行控制結構 10
1.4.6 本章小結 11
第2章 Python數據類型 12
2.1 表達式、變量和賦值語句 12
2.1.1 代數表達式和函數 12
2.1.2 布爾表達式和運算符 14
2.1.3 變量和賦值語句 16
2.1.4 變量名稱 18
2.2 字符串 18
2.2.1 字符串運算符 19
2.2.2 索引運算符 21
2.3 列表和元組 22
2.3.1 列表運算符 22
2.3.2 列表是可變類型,字符串是不可變類型 24
2.3.3 元組 24
2.3.4 元組和列表的方法 26
2.4 對象和類 28
2.4.1 對像類型 28
2.4.2 數值類型的有效值 29
2.4.3 數值類型的運算符 30
2.4.4 創建對象 32
2.4.5 隱式類型轉換 32
2.4.6 顯式類型轉換 33
2.4.7 類方法和麵向對象的程序設計 34
2.5 Python標準庫 35
2.5.1 math模塊 35
2.5.2 fractions模塊 36
2.6 電子教程案例研究:海龜圖形 37
2.7 本章小結 37
2.8 練習題答案 37
2.9 習題 39
第3章 命令式編程 43
3.1 Python程序 43
3.1.1 我們的第一個Python程序 43
3.1.2 Python模塊 45
3.1.3 內置函數print() 45
3.1.4 使用input()函數實現交互式輸入 46
3.1.5 eval()函數 47
3.2 執行控制結構 47
3.2.1 單分支結構 48
3.2.2 雙分支結構 51
3.2.3 循環結構 52
3.2.4 嵌套的控制流結構 55
3.2.5 range()函數 55
3.3 用戶自定義函數 57
3.3.1 我們自定義的第一個函數 57
3.3.2 函數輸入參數 58
3.3.3 print()與return的比較 59
3.3.4 函數定義實際上是“賦值”語句 60
3.3.5 註釋 61
3.3.6 文檔字符串 61
3.4 Python變量和賦值語句 63
3.4.1 可變類型和不可變類型 63
3.4.2 賦值語句和可變性 65
3.4.3 交換 66
3.5 參數傳遞 67
3.5.1 不可變類型參數傳遞 67
3.5.2 可變類型參數傳遞 69
3.6 電子教程案例研究:自動化海龜圖形 70
3.7 本章小結 70
3.8 練習題答案 70
3.9 習題 73
3.10 思考題 74
第4章 文本數據、文件和異常 77
4.1 深入研究字符串 77
4.1.1 字符串表示 77
4.1.2 深入研究索引運算符 79
4.1.3 字符串方法 80
4.2 格式化輸出 83
4.2.1 函數print() 83
4.2.2 字符串方法format() 84
4.2.3 按列對齊排列數據 86
4.2.4 獲取與格式化日期和時間 89
4.3 文件 91
4.3.1 文件系統 91
4.3.2 打開和關閉文件 92
4.3.3 讀取文本文件的模式 96
4.3.4 寫入文本文件 98
4.4 錯誤和異常 99
4.4.1 語法錯誤 100
4.4.2 內置異常 100
4.5 電子教程案例研究:圖像文件 102
4.6 本章小結 102
4.7 練習題答案 103
4.8 習題 104
4.9 思考題 106
第5章 執行控制結構 108
5.1 選擇控制和if語句 108
5.1.1 三路以及多路分支 108
5.1.2 條件的排列順序 110
5.2 for循環和迭代模式 111
5.2.1 循環模式:迭代循環 111
5.2.2 循環模式:計數器循環 112
5.2.3 循環模式:累加器循環 114
5.2.4 其他類型的累加 115
5.2.5 循環模式:嵌套循環 117
5.3 深入研究列表:二維列表 119
5.3.1 二維列表 119
5.3.2 二維列表和嵌套循環模式 120
5.4 while循環 122
5.5 更多循環模式 124
5.5.1 循環模式:序列循環 124
5.5.2 循環模式:無限循環 125
5.5.3 循環模式:循環和折半 126
5.6 其他迭代控制語句 127
5.6.1 break語句 127
5.6.2 continue語句 128
5.6.3 pass語句 129
5.7 電子教程案例研究:圖像處理 129
5.8 本章小結 130
5.9 練習題答案 130
5.10 習題 133
5.11 思考題 134
第6章 容器和隨機性 140
6.1 字典 140
6.1.1 用戶自定義索引作為字典的動機 140
6.1.2 字典類屬性 141
6.1.3 字典運算符 143
6.1.4 字典方法 144
6.1.5 字典作為多路分支if語句的替代方法 146
6.1.6 字典作為計數器集合 147
6.1.7 元組對象可以作為字典的鍵 149
6.2 集合 150
6.2.1 使用set構造函數移除重複項 151
6.2.2 set運算符 152
6.2.3 set方法 153
6.3 字符編碼和字符串 154
6.3.1 字符編碼 154
6.3.2 ASCII 154
6.3.3 Unicode 156
6.3.4 Unicode字符的UTF-8編碼 158
6.4 random模塊 158
6.4.1 選擇一個隨機整數 159
6.4.2 選擇一個隨機“實數” 160
6.4.3 隨機混排、挑选和抽樣 161
6.5 電子教程案例研究:機會遊戲 161
6.6 本章小結 162
6.7 練習題答案 162
6.8 習題 165
6.9 思考題 166
第7章 名稱空間 171
7.1 函數封裝 171
7.1.1 代碼重用 172
7.1.2 模塊化 172
7.1.3 封裝 172
7.1.4 局部變量 172
7.1.5 與函數調用相關的名稱空間 173
7.1.6 名稱空間與程序棧 174
7.2 全局名稱空間和局部名稱空間 177
7.2.1 全局變量 178
7.2.2 局部作用範圍的變量 178
7.2.3 全局作用範圍的變量 179
7.2.4 在函數中改變全局變量 180
7.3 異常控制流 181
7.3.1 異常和異常控制流 182
7.3.2 捕獲和處理異常 183
7.3.3 默認異常處理程序 184
7.3.4 捕獲給定類型的異常 184
7.3.5 多重異常處理程序 185
7.3.6 控制異常流 186
7.4 模塊作為名稱空間 189
7.4.1 模塊屬性 189
7.4.2 導入模塊時發生了什麼 190
7.4.3 模塊搜索路徑 190
7.4.4 頂層模塊 192
7.4.5 導入模塊屬性的不同方法 193
7.5 類作為名稱空間 195
7.5.1 一個類是一個名稱空間 195
7.5.2 類方法是在類名稱空間中定義的函數 196
7.6 電子教程案例研究:使用調試器進行調試 197
7.7 本章小結 197
7.8 練習題答案 197
7.9 習題 199
7.10 思考題 200
第8章 面向對象的程序設計 202
8.1 定義新的Python類 202
8.1.1 類Point的方法 202
8.1.2 類和名稱空間 203
8.1.3 每個對像都有一個關聯的名稱空間 204
8.1.4 類Point的實現 204
8.1.5 實例變量 206
8.1.6 實例繼承類屬性 206
8.1.7 類定義的一般格式 207
8.1.8 編寫類的文檔 208
8.1.9 類Animal 208
8.2 用戶自定義類示例 210
8.2.1 構造函數重載 210
8.2.2 默認構造函數 211
8.2.3 撲克牌類 212
8.3 設計新的容器類 213
8.3.1 設計一個表示一副撲克牌的類 213
8.3.2 實現Deck類 214
8.3.3 容器類Queue 215
8.3.4 實現Queue類 216
8.4 運算符重載 217
8.4.1 運算符是類方法 218
8.4.2 使Point類對用戶友好 220
8.4.3 構造函數和repr()運算符之間的約定 221
8.4.4 使Queue類對用戶友好 223
8.5 繼承 225
8.5.1 繼承類的屬性 225
8.5.2 類定義的一般格式 227
8.5.3 重寫父類方法 227
8.5.4 擴展父類方法 229
8.5.5 通過繼承list實現一個Queue類 231
8.6 用戶自定義異常 232
8.6.1 拋出一個異常 232
8.6.2 用戶自定義異常類 233
8.6.3 改進類Queue的封裝 234
8.7 電子教程案例研究:索引和迭代器 234
8.8 本章小結 235
8.9 練習題答案 235
8.10 習題 237
8.11 思考題 239
第9章 圖形用戶界面 246
9.1 tkinter圖形用戶界面開發基本知識 246
9.1.1 組件Tk:GUI窗口 246
9.1.2 組件Label:顯示文本 247
9.1.3 顯示圖像 248
9.1.4 佈局組件 249
9.1.5 將組件佈局為表格 251
9.2 基於事件的tkinter組件 253
9.2.1 Button組件及事件處理程序 253
9.2.2 事件、事件處理程序和mainloop() 255
9.2.3 Entry組件 256
9.2.4 Text組件和綁定事件 258
9.2.5 事件模式和tkinter類Event 259
9.3 設計圖形用戶界面 261
9.3.1 組件Canvas 261
9.3.2 作為組織容器的組件Frame 264
9.4 面向對象的圖形用戶界面 265
9.4.1 GUI面向對象程序設計基本知識 266
9.4.2 把共享組件賦值給實例變量 268
9.4.3 把共享數據賦值給實例變量 269
9.5 電子教程案例研究:開發一個計算器 271
9.6 本章小結 271
9.7 練習題答案 271
9.8 習題 275
9.9 思考題 275
第10章 遞歸 278
10.1 遞歸簡介 278
10.1.1 調用自身的函數 278
10.1.2 停止條件 279
10.1.3 遞歸函數的特性 280
10.1.4 遞歸思想 281
10.1.5 遞歸函數調用和程序棧 282
10.2 遞歸示例 284
10.2.1 遞歸數列模式 284
10.2.2 分形圖形 286
10.2.3 病毒掃描 289
10.2.4 線性遞歸 292
10.3 運行時間分析 294
10.3.1 指數函數 294
10.3.2 運算次數 295
10.3.3 斐波那契數列 296
10.3.4 運行時間的實驗分析 298
10.4 查找 300
10.4.1 線性查找 300
10.4.2 二分查找 301
10.4.3 線性查找和二分查找比較 303
10.4.4 唯一性測試 304
10.4.5 選擇第k個最大(或最小)項 305
10.4.6 計算出現頻率最多的項 305
10.5 電子教程案例研究:漢諾塔 306
10.6 本章小結