《从问题到程序:用Python学习编程和计算》目录

裘宗燕



返回书籍首页

前言

第1章 程序设计和Python 1
1.1 计算机和程序 1
1.1.1 “是什么”和“怎样做”的知识 1
1.1.2 计算和程序 3
1.1.3 编程语言 7
1.2 Python语言简介 10
1.2.1 Python语言的发展和应用 10
1.2.2 Python系统和IDLE编程环境 13
1.3 程序开发 15
1.3.1 程序开发过程 15
1.3.2 程序错误 16
1.3.3 从问题到程序 19

练习 22
第2章 计算和编程初步 23
2.1 数值表达式和算术 23
2.1.1 整数计算 23
2.1.2 浮点数和复数 27
2.2 数据对象、计算和类型 29
2.2.1 对象和类型 29
2.2.2 混合类型计算和类型转换 30
2.2.3 数值类型和计算的简单总结 31
2.3 内置函数和数学函数包 32
2.3.1 函数及其使用 33
2.3.2 处理数值的内置函数 33
2.3.3 数学函数包 34
2.4 字符串 35
2.4.1 字符串和字符串类型 35
2.4.2 字符串操作 36
2.5 标识符、变量和赋值 38
2.5.1 变量、名字和值 38
2.5.2 简单顺序计算 40
2.6 简单脚本程序 41
2.6.1 脚本的编辑和执行 41
2.6.2 程序和输入 43
2.7 判断和条件控制 45
2.7.1 条件判断和逻辑表达式 45
2.7.2 if语句(条件语句) 46
2.7.3 编程实例 48
2.8 重复计算和循环 49
2.8.1 重复计算 50
2.8.2 for语句和重复计算 51
2.8.3 while语句和迭代 53
2.8.4 循环控制 56
2.9 计算的抽象和函数 56
2.9.1 计算的控制和抽象 56
2.9.2 计算的抽象:函数 57
2.9.3 函数定义和使用实例 60
2.10 若干Python机制及其他 62
2.10.1 已讨论的Python机制 62
2.10.2 若干Python机制 62
2.10.3 Python解释器 64
2.11 补充材料 64
2.11.1 语言细节 65
2.11.2 编程技术 70
练习 71

第3章 基本编程技术 77
3.1 循环程序设计 77
3.1.1 循环的需求和问题 78
3.1.2 常见循环形式 80
3.1.3 输入循环 86
3.2 递归 89
3.2.1 递归定义的函数 89
3.2.2 乘幂的计算 90
3.2.3 循环和递归 91
3.2.4 斐波那契数列的计算 92
3.2.5 最大公约数 97
3.2.6 不容易用循环求解的递归问题 100
3.2.7 更复杂的递归情况 103
3.3 程序终止性 103
3.3.1 调和级数的部分和 104
3.3.2 程序终止性不可判定 104
3.4 定义函数 105
3.4.1 为什么定义函数 105
3.4.2 学习定义函数 108
3.4.3 函数:两种观点及其联系 111
3.4.4 通用和专用的方法 117
练习 120

第4章 函数和程序结构 124
4.1 作用域、环境和状态 124
4.1.1 作用域与函数定义 124
4.1.2 环境和状态 126
4.1.3 程序执行中的环境变化 129
4.1.4 模块和环境 133
4.2 函数定义和函数调用 135
4.2.1 函数定义的结构 135
4.2.2 函数调用中的问题 140
4.2.3 带默认值形参和关键字实参 143
4.3 编程框架和高阶函数 145
4.3.1 编程框架和函数的函数参数 145
4.3.2 匿名函数和lambda表达式 149
4.3.3 随机数和模拟 153
4.3.4 高阶函数 155
4.4 程序的测试和调试 156
4.4.1 测试 157
4.4.2 排除程序里的错误 162
4.4.3 使用IDLE的调试功能 163
4.4.4 程序测试问题 165
4.5 补充材料 166
4.5.1 语言细节 166
4.5.2 编程技术和规则 169
练习 169

第5章 数据的组织和操作 172
5.1 组合数据对象 172
5.2 表 173
5.2.1 简介 174
5.2.2 表的构造和操作 175
5.2.3 编程实例 178
5.3 元组 183
5.3.1 基础 183
5.3.2 有理数程序包 185
5.3.3 打包和拆分 187
5.4 序列、不变对象和可变对象 189
5.4.1 序列和序列操作 189
5.4.2 描述式 194
5.4.3 对象、变动和变量关联 196
5.4.4 一些程序实例 202
5.4.5 表处理 204
5.5 字符串及其格式化生成 209
5.5.1 字符串操作 209
5.5.2 字符串的格式化 213
5.5.3 一个简单的交互式计算器 216
5.6 字典 217
5.6.1 概念和操作 218
5.6.2 字典与函数参数 221
5.6.3 字典的应用实例 222
5.7 集合 224
5.7.1 概念和操作 224
5.7.2 集合操作 226
5.8 程序实例 228
5.8.1 多项式计算 228
5.8.2 另一个筛法实例 231
5.9 若干语言和技术问题 232
5.9.1 逻辑类型和逻辑判断 232
5.9.2 函数参数的总结 235
5.10 补充材料 236
5.10.1 语言细节 236
5.10.2 编程技术 240
练习 241

第6章 高级编程技术 248
6.1 文件:使用外存数据 248
6.1.1 文件和输入/输出 249
6.1.2 Python的文件功能 251
6.1.3 文件处理程序实例 256
6.2 生成器函数和闭包 261
6.2.1 生成器函数 261
6.2.2 闭包和装饰器 265
6.2.3 编程实例 274
6.3 异常和异常处理 276
6.3.1 运行中的错误 277
6.3.2 异常和异常处理 279
6.3.3 异常处理的结构和技术 282
6.3.4 try结构和raise语句详述 284
6.3.5 预定义异常 287
6.3.6 用异常作为控制机制 288
6.4 数据处理和持久性 291
6.4.1 文本生成 291
6.4.2 数据记录和信息管理 295
6.4.3 数据持久性 300
6.4.4 with语句 302
6.5 Python程序的几个问题 304
6.5.1 Python程序及其运行 304
6.5.2 程序格式 307
6.5.3 怎样阅读Python手册 308
6.6 补充材料 309
6.6.1 语言细节 309
6.6.2 编程技术 313
练习 315

第7章 数据抽象和面向对象编程 320
7.1 数据抽象、类和自定义类型 320
7.1.1 类型和数据组合 321
7.1.2 对象、类和类型 323
7.2 Python的类和对象 325
7.2.1 对象和操作 325
7.2.2 类定义 326
7.2.3 几点说明 332
7.2.4 编程实例 335
7.3 继承 339
7.3.1 继承、基类和派生类 340
7.3.2 编程实例 344
7.3.3 多继承 348
7.3.4 异常和类 349
7.4 实例:学校人事管理 350
7.4.1 概念分层和基础人员类 350
7.4.2 具体人员类的设计和实现 355
7.4.3 讨论 358
7.5 特殊方法名和特殊功能的类 359
7.5.1 容器类和迭代器 359
*7.5.2 上下文管理器和with语句 363
7.5.3 几个特殊方法名 364
7.6 补充材料 365
*7.6.1 Python类、对象和方法 365
7.6.2 面向对象的技术和方法 371
7.6.3 总结 373
练习 374

第8章 其他编程问题 377
8.1 图形用户界面 377
8.1.1 人机界面的问题 377
8.1.2 标准库包tkinter和图形用户界面 380
*8.1.3 tkinter的ttk包 400
8.1.4 GUI的简单应用和问题 402
8.1.5 应用程序的GUI设计和实现 404
8.1.6 总结和讨论 412
8.2 并发程序设计 414
8.2.1 并发程序 415
8.2.2 Python并发库threading包 418
8.2.3 定义自己的线程类 422
8.2.4 并发程序的一些问题 424
8.2.5 线程间通信和queue包 431
8.2.6 一个GUI并发程序实例 433
8.2.7 总结和讨论 436
练习 438

附录A Python语言速查 440

附录B 标准函数 444

附录C 书中使用的几个标准库包 448

附录D IDLE开发环境 449

参考文献及进一步阅读资料 452


如对本书有任何意见和建议,请发email给我,谢谢!

本页相关材料为裘宗燕所有,可以自由用于学习和教学活动,其他使用必须得到裘宗燕书面许可。

2016.7