第1章 程序之道 1
1.1 Python编程语言 1
1.2什么是程序 3
1.3什么是调试 3
1.4语法错误 3
1.5运行时错误 4
1.6语义错误 4
1.7实验型调试 4
1.8形式语言和自然语言 5
1.9第一个程序 6
1.10调试 7
1.11术语表 7
1.12练习 9
第2章 变量、表达式和语句 10
2.1值和类型 10
2.2变量 11
2.3变量名称和关键字 12
2.4操作符和操作对象 13
2.5表达式和语句 13
2.6交互模式和脚本模式 14
2.7操作顺序 15
2.8字符串操作 15
2.9注释 16
2.10调试 16
2.11术语表 17
2.12练习 18
第3章 函数 19
3.1函数调用 19
3.2类型转换函数 19
3.3数学函数 20
3.4组合 21
3.5添加新函数 21
3.6定义和使用 23
3.7执行流程 23
3.8形参和实参 24
3.9变量和形参是局部的 25
3.10栈图 25
3.11有返回值函数和无返回值函数 26
3.12为什么要有函数 27
3.13使用from导入模块 28
3.14调试 28
3.15 术语表 29
3.16练习 30
第4章 案例研究:接口设计 32
4.1乌龟世界 32
4.2简单重复 33
4.3练习 34
4.4封装 35
4.5泛化 36
4.6接口设计 36
4.7重构 37
4.8一个开发计划 38
4.9文档字符串 39
4.10调试 39
4.11术语表 40
4.12练习 40
第5章 条件和递归 43
5.1求模操作符 43
5.2布尔表达式 43
5.3逻辑操作符 44
5.4条件执行 44
5.5选择执行 45
5.6条件链 45
5.7嵌套条件 46
5.8递归 46
5.9递归函数的栈图 48
5.10无限递归 48
5.11键盘输入 49
5.12调试 50
5.13术语表 51
5.14练习 52
第6章 有返回函数 54
6.1返回值 54
6.2增量开发 55
6.3组合 57
6.4布尔函数 58
6.5再谈递归 59
6.6坚持信念 60
6.7另一个示例 61
6.8检查类型 61
6.9调试 63
6.10术语表 64
6.11练习 64
第7章 迭代 67
7.1多重赋值 67
7.2更新变量 68
7.3 while语句 68
7.4 break语句 70
7.5平方根 70
7.6算法 72
7.7调试 72
7.8术语表 73
7.9练习 73
第8章 字符串 75
8.1字符串是一个序列 75
8.2 len 76
8.3使用for循环进行遍历 76
8.4字符串切片 77
8.5字符串是不可变的 78
8.6搜索 79
8.7循环和计数 79
8.8字符串方法 80
8.9操作符in 81
8.10字符串比较 81
8.11调试 82
8.12术语表 84
8.13练习 84
第9章 案例分析:文字游戏 86
9.1读取单词列表 86
9.2练习 87
9.3搜索 88
9.4使用下标循环 89
9.5调试 91
9.6术语表 91
9.7练习 91
第10章 列表 93
10.1列表是一个序列 93
10.2列表是可变的 93
10.3遍历一个列表 95
10.4列表操作 95
10.5列表切片 96
10.6列表方法 96
10.7映射、过滤和化简 97
10.8删除元素 98
10.9列表和字符串 99
10.10对象和值 100
10.11别名 101
10.12列表参数 102
10.13调试 103
10.14术语表 105
10.15 练习 105
第11章 字典 108
11.1使用字典作为计数器集合 110
11.2循环和字典 111
11.3反向查找 111
11.4字典和列表 113
11.5备忘 114
11.6全局变量 116
11.7长整数 117
11.8调试 118
11.9术语表 118
11.10练习 119
第12章 元组 121
12.1元组是不可变的 121
12.2元组赋值 122
12.3作为返回值的元组 123
12.4可变长参数元组 123
12.5列表和元组 124
12.6字典和元组 125
12.7比较元组 127
12.8序列的序列 128
12.9调试 128
12.10术语表 129
12.11练习 130
第13章 案例研究:选择数据结构 132
13.1单词频率分析 132
13.2随机数 133
13.3单词直方图 134
13.4最常用的单词 135
13.5可选形参 136
13.6字典减法 136
13.7随机单词 137
13.8马尔可夫分析 138
13.9数据结构 139
13.10调试 141
13.11术语表 142
13.12练习 142
第14章 文件 143
14.1持久化 143
14.2读和写 143
14.3格式操作符 144
14.4文件名和路径 145
14.5捕获异常 146
14.6数据库 147
14.7封存 148
14.8管道 149
14.9编写模块 150
14.10调试 151
14.11术语表 152
14.12练习 153
第15章 类和对象 154
15.1用户定义类型 154
15.2属性 155
15.3矩形 156
15.4作为返回值的实例 157
15.5对象是可变的 158
15.6复制 158
15.7调试 160
15.8术语表 160
15.9练习 161
第16章 类和函数 163
16.1时间 163
16.2纯函数 164
16.3修改器 165
16.4原型和计划 166
16.5调试 167
16.6术语表 168
16.7练习 168
第17章 类和方法 170
17.1面向对象特性 170
17.2打印对象 171
17.3另一个示例 172
17.4一个更复杂的示例 173
17.5init方法 173
17.6 str方法 174
17.7操作符重载 174
17.8基于类型的分发 175
17.9多态 176
17.10调试 177
17.11接口和实现 178
17.12术语表 179
17.13练习 179
第18章 继承 181
18.1卡片对象 181
18.2类属性 182
18.3对比卡牌 183
18.4牌组 184
18.5打印牌组 185
18.6添加、删除、洗牌和排序 186
18.7继承 186
18.8类图 188
18.9调试 189
18.10数据封装 190
18.11术语表 191
18.12练习 192
第19章 案例研究:Tkinter 195
19.1 GUI 195
19.2按钮和回调 196
19.3画布部件 197
19.4坐标序列 198
19.5更多部件 198
19.6包装部件 200
19.7菜单与Callable 202
19.8绑定 203
19.9调试 205
19.10术语表 206
19.11练习 206
附录A调试 209
附录B算法分析 217
附录C Lumpy 227
译后记 236