第1部分 引 论
第1章 关于本书 3
1.1 什么人要学编程 3
1.2 本书的内容 4
1.3 为什么选择Python 5
1.4 如何阅读本书 5
1.5 本书内容的组织 6
第2章 学习编程的要求 8
2.1 关于编程者 8
2.2 先决条件 9
2.3 Python 9
第3章 什么是编程 11
3.1 定义 11
3.2 发展史简述 12
3.3 各种程序的共同特点 13
第4章 开始 20
4.1 使用Python 20
4.2 Python的出错消息 21
第2部分 程序设计基础
第5章 简单的指令序列 25
5.1 简单的语句 25
5.2 Python中的计算器 25
5.3 使用格式化字符串 27
5.4 注释 28
5.5 访问模块 29
第6章 原材料——数据 31
6.1 数据定义 31
6.2 变量定义 32
6.3 基本数据类型 33
6.4 集合 38
6.4.1 Python中的集合 38
6.4.2 其他集合类型 42
6.5 高级数据类型 44
6.5.1 文件 44
6.5.2 日期和时间 44
6.5.3 复杂/用户定义类型 45
6.6 Python的专用运算符 47
第7章 顺序结构 49
7.1 计算面积 51
7.1.1 求圆的面积 51
7.1.2 求复杂多边形的面积 51
7.2 12倍乘法表 52
第8章 循环——重复的艺术 54
8.1 For循环 54
8.2 While循环 55
8.3 再次返回12倍乘法表 56
8.4 嵌套循环 57
第9章 选择 60
9.1 链式IF语句 61
9.2 使用逻辑运算符合并判断条件 63
第10章 与用户交互 66
10.1 从用户那里获得数据 66
10.2 命令行变量 67
第11章 模块化程序设计 69
11.1 什么是模块 69
11.2 使用函数 70
11.3 使用模块 71
11.3.1 sys模块 71
11.3.2 其他的模块 72
11.4 定义新函数 73
11.4.1 从函数中返回值 74
11.4.2 函数中值的传递 75
11.4.3 默认参数值 75
11.4.4 单词计数 78
11.5 创建自己的模块 79
第12章 文件和文本处理 82
12.1 输入和输出文件 82
12.2 处理大型文件 83
12.3 修改已经存在的文件 85
12.4 往文件中添加数据 86
12.5 单词计数 87
第13章 编程风格 89
13.1 多一些注释 89
13.1.1 描述代码行 89
13.1.2 段落描述 90
13.1.3 描述文件 91
13.2 文档字符串 91
13.3 变量名 92
第14章 错误处理 94
14.1 传统的错误处理方法 94
14.2 特殊的错误处理方法 95
14.3 出现错误 96
14.4 嵌套错误处理程序 98
14.5 日志文件 99
第3部分 高 级 专 题
第15章 递归 103
15.1 什么是递归 103
15.2 列表的递归 105
第16章 名字空间 107
16.1 简单回顾 107
16.2 Python的方法 108
16.2.1 避免函数中的名字冲突 109
16.2.2 变量名的处理 110
第17章 面向对象编程 112
17.1 什么是面向对象编程 112
17.2 数据和函数的结合 113
17.3 定义类 113
17.4 使用类 114
17.5 同样的方法,不同的结果 115
17.6 继承 116
17.6.1 BankAccount类 116
17.6.2 InterestAccount 类 118
17.6.3 ChargingAccount类 118
17.6.4 测试系统 119
第18章 事件驱动编程 122
18.1 模拟一个事件循环 122
18.2 一个GUI程序 124
第19章 正则表达式 127
19.1 定义 127
19.2 序列 128
19.3 重复 129
19.4 条件 131
19.5 在Python中使用正则表达式 132
第20章 调试 136
20.1 停止运行、查找错误和思考原因 136
20.2 输出 137
20.3 Python调试器 138
20.3.1 启动调试器 139
20.3.2 跟踪代码 140
20.3.3 断点 142
20.4 用IDLE进行调试 144
20.5 注 146
第21章 设计解决方案 148
21.1 理解问题 148
21.1.1 需求说明 149
21.1.2 非功能性需求 149
21.1.3 优先级和范围 149
21.2 考虑选择 150
21.3 静态设计和动态设计 150
21.3.1 数据或对象 150
21.3.2 定时和同步 151
21.4 在环境中工作 151
21.4.1 操作系统的限制 152
21.4.2 与现有系统的集成 152
21.5 测试 152
21.6 配置管理 153
第4部分 案 例 研 究
第22章 文法计数器 157
22.1 计算行数、单词数及字符数 157
22.2 计算句子数目 159
22.3 将伪代码转换为模块 160
22.3.1 getCharGroups() 162
22.3.2 getPunctuation() 163
22.4 最终的文法模块 165
22.5 类和对象 166
22.5.1 文本文档 169
22.5.2 HTML文档 170
22.6 添加图形用户界面(GUI) 171
22.7 设计图形用户界面 173
第23章 猜谜游戏 180
23.1 Hangman游戏 180
23.2 为解决方案创建原型 182
23.2.1 选择一个单词 182
23.2.2 读入已猜测的字母 183
23.2.3 保留得分 183
23.3 对象框架 184
23.3.1 Game 185
23.3.2 Target 185
23.3.3 Guess 185
23.3.4 Outcome 185
23.4 抽象框架 185
23.5 测试框架——一个简单的单词游戏 187
23.6 基于文本的Hangman 189
23.7 GUI Hangman 192
23.8 其他想法 199
23.8.1 Mastermind 199
23.8.2 Rock/Scissors/Paper 199
23.8.3 Minesweeper 199
结尾 201
第5部分 附 录
附录A 安装和调试Python 205
A.1 运行安装程序 205
A.2 测试安装 206
A.3 运行IDLE 206
A.3.1 使用Python提示符 207
A.3.2 从文件中生成、保存和运行程序 207
A.4 最后工作 208
附录B 一些有用的编程语言 209
B.1 Python 209
B.1.1 Hello World 209
B.1.2 实用性 210
B.2 BASIC 210
B.2.1 Hello World 210
B.2.2 实用性 211
B.2.3 BASIC的其他版本 211
B.3 C/C++ 212
B.3.1 Hello World 212
B.3.2 实用性 213
B.4 Java 213
B.4.1 Hello World 214
B.4.2 实用性 214
B.5 对象Pascal(Delphi) 215
B.5.1 Hello World 215
B.5.2 实用性 216
B.6 Perl 216
B.6.1 Hello World 217
B.6.2 实用性 218
B.7 Smalltalk 218
B.7.1 Hello World 218
B.7.2 实用性 219
B.8 其他有意义的语言 219
B.8.1 Awk 220
B.8.2 Eiffel 220
B.8.3 Lisp 220
B.8.4 Prolog 221
B.8.5 Ruby 221
B.8.6 Tcl/Tk 221
附录C 参考资料 222
C.1 可读书目 222
C.1.1 Python 222
C.1.2 其他语言 223
C.1.3 基本编程 224
C.1.4 面向对象编程 225
C.2 可访问的站点 227