第1章 什么是编程 1
1.1程序和编程 2
1.2什么是编程语言 3
1.3什么是程序错误(Bug) 3
1.4方括号、圆括号和花括号的区别 4
1.5安装Python 4
第2章 你好,Python 5
2.1计算机如何运行一个Python程序 5
2.2表达式和值:用Python做算术 6
2.2.1类型 7
2.2.2整数除法、模和幂运算 8
2.3什么是类型 9
2.3.1有穷精度 10
2.3.2运算的优先级 10
2.4变量和计算机内存:记忆值 12
2.4.1值、变量和计算机内存 13
2.4.2赋值语句 14
2.4.3给变量重新赋值 15
2.4.4增强赋值 16
2.5 Python如何告诉用户出错了 18
2.6占多行的单个语句 19
2.7代码的描述 20
2.8增强代码的可读性 21
2.9本章小结 21
2.10习题 22
第3章 函数的设计与应用 24
3.1 Python提供的函数 24
3.2内存地址:Python如何跟踪内存存储的值 27
3.3自定义函数 28
3.4用局部变量作临时存储 31
3.5在内存模型中跟踪函数调用 32
3.6设计新函数:一个菜单 38
3.6.1设计三个有关生日的函数 40
3.7编写和运行一个程序 48
3.8省略一个返回语句:None 50
3.9处理代码不能处理的情况 50
3.10本章小结 51
3.11习题 52
第4章 文本的处理 54
4.1构造字符串 54
4.1.1串上的操作 55
4.2在串中使用特殊字符 57
4.3构建多行串 58
4.4打印信息 59
4.5从键盘获取信息 62
4.6本章小结 63
4.7习题 63
第5章 选择 65
5.1布尔类型 65
5.1.1布尔运算 65
5.1.2关系运算 68
5.1.3比较运算的组合 70
5.1.4短路求值 72
5.1.5串的比较 72
5.2选择执行的语句 73
5.3嵌套条件语句 79
5.4记住一个布尔表达式求值的结果 79
5.5本章小结 81
5.6习题 81
第6章 程序组织的模块化方法 84
6.1导入模块 85
6.2定义自己的模块 89
6.2.1导入时发生了什么 90
6.2.2在导入时选择要运行的代码:__main__ 91
6.3半自动地测试代码 95
6.4函数分组的原则 96
6.5本章小结 96
6.6习题 97
第7章 方法的使用 98
7.1模块、类和方法 98
7.2面向对象的调用方法 100
7.3探索字符串方法 101
7.4那些下划线是什么 105
7.5本章小结 107
7.6习题 107
第8章 使用列表存储数据集合 109
8.1存储和访问列表中的数据 109
8.1.1空列表 111
8.1.2列表是异构的 111
8.2列表类型注释 112
8.3修改列表 113
8.4列表上的操作 114
8.4.1列表上的in操作符 116
8.5列表切片 116
8.6使用别名:名称代表什么 118
8.6.1可变参数 118
8.7列表方法 120
8.8处理列表的列表 121
8.9本章小结 123
8.10习题 123
第9章 使用循环重复代码 126
9.1处理列表中的数据项 126
9.2处理字符串中的字符 128
9.3在某个范围的数字上循环 128
9.3.1生成数字范围 128
9.4用索引处理列表 130
9.4.1使用索引处理并行列表 132
9.5循环嵌套循环 133
9.5.1嵌套列表上的循环 134
9.5.2循环不规则列表 135
9.6循环直到某个条件成立 136
9.6.1无限循环 138
9.7基于用户输入的重复 138
9.8使用break和continue控制循环 139
9.8.1 break语句 139
9.8.2 continue语句 141
9.8.3关于break和continue的警告 142
9.9本章小结 143
9.10习题 143
第10章 文件读写 146
10.1文件分多少种 146
10.2打开文件 147
10.2.1 with语句 148
10.2.2计算机上的文件是如何组织的 149
10.2.3指定想要的文件 149
10.3读取文件的方法 150
10.3.1读取方法 150
10.3.2 Readlines方法 151
10.3.3 “For Line in File”方法 152
10.3.4 Readline方法 153
10.4互联网上的文件 155
10.5写入文件 156
10.6使用StringlO编写示例调用 157
10.7编写使用文件读取技术的算法 159
10.7.1跳过标题 159
10.7.2处理数据中缺失的值 161
10.7.3处理空格分隔的数据 163
10.8多行记录 167
10.9向前看 170
10.10本章小结 172
10.11习题 172
第11章 使用其他容器类型存储数据 174
11.1使用集合存储数据 174
11.1.1集合运算 176
11.1.2集合示例:北极鸟 178
11.1.3集合的内容一定是不可变的 179
11.2使用多元组存储数据 179
11.2.1使用多元组赋值给多个变量 183
11.3用字典存储数据 184
11.3.1更新和检查成员 186
11.3.2遍历字典 187
11.3.3字典操作 188
11.3.4字典示例 190
11.4反转字典 191
11.5在元组、集合和字典中使用in运算符 192
11.6各种容器的比较 193
11.7创建新的类型注释 193
11.8本章小结 194
11.9习题 195
第12章 算法的设计 197
12.1查找两个最小值 197
12.1.1查找、移除、查找 199
12.1.2排序、确定最小值、获取索引 201
12.1.3遍历列表 202
12.2定时功能 205
12.3本章小结 207
12.4习题 207
第13章 搜索与排序 209
13.1搜索列表 209
13.1.1线性搜索概述 209
13.1.2线性搜索的while循环版本 211
13.1.3线性搜索的for循环版本 212
13.1.4哨兵搜索 213
13.1.5对搜索进行计时 214
13.1.6线性搜索的运行时间 215
13.2二分搜索 215
13.2.1二分搜索的运行时间 219
13.2.2内置二分搜索 219
13.3排序 220
13.3.1选择排序 221
13.3.2插入排序 225
13.3.3性能 227
13.4更高效的排序算法 229
13.4.1第一次尝试 229
13.5归并排序:一种快速排序算法 229
13.5.1归并两个有序列表 230
13.5.2归并排序 230
13.5.3归并排序的分析 232
13.6本章小结 233
13.7习题 234
第14章 面向对象的编程 236
14.1理解一个问题域 236
14.2 isinstance函数、object类和Book类 237
14.3在Book类中编写一个方法 240
14.4使用Python语法:更多特殊的方法 246
14.5面向对象理论的一些知识 249
14.5.1封装 249
14.5.2多态 250
14.5.3继承 251
14.6案例学习:分子、原子和PDB文件 254
14.6.1 Atom类 255
14.6.2 Molecule类 256
14.7本章小结 258
14.8习题 258
第15章 测试与调试 262
15.1为什么需要做程序测试 262
15.2案例学习:测试above_freezing 263
15.2.1为above_freezing选择测试样例 263
15.2.2使用unittest模块测试above_freezing 264
15.3案例学习:测试函数running_sum 267
15.3.1为函数running_sum选择测试样例 268
15.3.2使用unittest模块测试running_sum函数 268
15.4选择测试样例 273
15.5寻找程序错误 273
15.6本章小结 274
15.7习题 274
第16章 创建图形用户接口 277
16.1使用tkinter模块 277
16.2构建一个基本的GUI 278
16.2.1在小部件中使用可修改变量 279
16.2.2使用框架类型来组合小部件 280
16.2.3使用输入框类型从用户处获取信息 281
16.3模型、视图和控制器 281
16.3.1使用Lambda 283
16.4自定义可视化样式 286
16.4.1改变字体 286
16.4.2改变颜色 286
16.4.3小部件的布局 288
16.5其他小部件简介 289
16.5.1使用文本 289
16.5.2使用复选按钮 290
16.5.3使用菜单 291
16.6面向对象的GUI 292
16.7本章小结 293
16.8习题 294
第17章 数据库 295
17.1概述 295
17.2创建和填充 296
17.2.1保存更改 298
17.2.2关闭连接 299
17.3数据检索 299
17.3.1查询条件 301
17.4更新和删除 301
17.5为缺失的数据使用NULL 302
17.6使用连接来组合表格 303
17.6.1移除重复值 306
17.7键和约束 307
17.8高级功能 308
17.8.1聚合 308
17.8.2分组 308
17.8.3自连接 309
17.8.4嵌套查询 310
17.8.5事务 312
17.9本章小结 313
17.10习题 314
参考文献 316