第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本章小结 306
10.7练习题答案 306
10.8习题 308
10.9思考题 309
第11章Web和搜索 315
11.1万维网 315
11.1.1 Web服务器和Web客户端 315
11.1.2 WWW的“管道” 316
11.1.3命名方案:统一资源定位器 316
11.1.4协议:超文本传输协议 317
11.1.5超文本标记语言 318
11.1.6 HTML元素 318
11.1.7 HTM L文档的树结构 320
11.1.8锚点HTML元素和绝对链接 320
11.1.9相对链接 321
11.2 Python WWW API 321
11.2.1模块urllib.request 322
11.2.2模块html.parser 324
11.2.3重载HTMLParser处理程序 325
11.2.4模块urllib.parse 327
11.2.5收集HTTP超链接的解析器 327
11.3字符串模式匹配 329
11.3.1正则表达式 329
11.3.2 Python标准库模块re 332
11.4电子教程案例研究:Web爬虫 333
11.5本章小结 333
11.6练习题答案 334
11.7习题 335
11.8思考题 336
第12章 数据库和数据处理 339
12.1数据库和SQl 339
12.1.1数据库表 339
12.1.2结构化查询语言 341
12.1.3 SELECT语句 341
12.1.4 WHERE子句 343
12.1.5内置SQL函数 345
12.1.6 GROUP BY子句 345
12.1.7多表SQL查询 346
12.1.8 CREATE TABLE语句 347
12.1.9INSERT和UPDATE语句 348
12.2 Python中的数据库编程 349
12.2.1数据库引擎和SQLite 349
12.2.2使用sqlite3创建一个数据库 349
12.2.3提交数据库更改和关闭数据库 351
12.2.4使用sqlite3查询数据库 351
12.3函数语言方法 353
12.3.1列表解析 354
12.3.2 MapReduce 问题求解框架 355
12.3.3 MapReduce的抽象概念 358
12.3.4倒排索引 359
12.4并行计算 361
12.4.1并行计算简介 362
12.4.2 multiprocessing模块中的Pool类 362
12.4.3并行加速比 364
12.4.4并行MapReduce 366
12.4.5并行和顺序MapReduce 366
12.5电子教程案例研究:数据交换 369
12.6本章小结 369
12.7练习题答案 369
12.8习题 372
12.9思考题 373