第1章 计算与计算思维 1
1.1什么是计算 1
1.1.1计算机与计算 1
1.1.2计算机语言 5
1.1.3算法 8
1.1.4实现 10
1.2什么是计算思维 11
1.2.1计算思维的基本原则 11
1.2.2计算思维的具体例子 12
1.2.3日常生活中的计算思维 14
1.2.4计算思维对其他学科的影响 15
1.3初识Python 16
1.3.1 Python简介 16
1.3.2第一个程序 18
1.3.3程序的执行方式 18
1.3.4 Python语言的基本成分 22
1.4程序排错 26
习题 28
第2章 用数据表示现实世界 30
2.1数据和数据类型 30
2.1.1数据是对现实的抽象 30
2.1.2常量与变量 31
2.1.3数据类型 33
2.1.4 Python的动态类型 34
2.2数值类型 35
2.2.1整数类型int 35
2.2.2长整数类型long 38
2.2.3浮点数类型float 40
2.2.4数学库模块math 44
2.2.5复数类型complex 45
2.3字符串类型str 46
2.3.1字符串类型的字面值形式 46
2.3.2字符串类型的操作 48
2.3.3字符的机内表示 50
2.3.4字符串类型与其他类型的转换 53
2.3.5字符串库string 54
2.4布尔类型bool 55
2.4.1关系运算 55
2.4.2逻辑运算 56
2.4.3布尔代数运算定律 59
2.4.4 Python中真假的表示与计算 60
2.5列表和元组类型 61
2.5.1列表类型list 62
2.5.2元组类型tuple 66
2.6数据的输入和输出 67
2.6.1数据的输入 68
2.6.2数据的输出 71
2.6.3格式化输出 72
2.7编程案例:查找问题 75
习题 76
第3章 数据处理的流程控制 79
3.1顺序控制结构 79
3.2分支控制结构 81
3.2.1单分支结构 81
3.2.2两路分支结构 83
3.2.3多路分支结构 84
3.3异常处理 86
3.3.1传统的错误检测方法 86
3.3.2传统错误检测方法的缺点 89
3.3.3异常处理机制 90
3.4循环控制结构 94
3.4.1 for循环 95
3.4.2 while循环 100
3.4.3循环的非正常中断 106
3.4.4嵌套循环 108
3.5结构化程序设计 110
3.5.1程序开发过程 111
3.5.2结构化程序设计的基本内容 112
3.6编程案例:如何求n个数据的最大值 115
3.6.1几种解题策略 115
3.6.2经验总结 118
3.7 Python布尔表达式用作控制结构 119
习题 121
第4章 模块化编程 123
4.1模块化编程基本概念 123
4.1.1模块化设计概述 123
4.1.2模块化编程 124
4.1.3编程语言对模块化编程的支持 125
4.2 Python语言中的函数 126
4.2.1用函数减少重复代码 127
4.2.2用函数改善程序结构 130
4.2.3用函数增强程序的通用性 132
4.2.4小结:函数的定义与调用 136
4.2.5变量的作用域 141
4.2.6函数的返回值 143
4.3自顶向下设计 146
4.3.1顶层设计 147
4.3.2第二层设计 149
4.3.3第三层设计 150
4.3.4第四层设计 152
4.3.5自底向上实现与单元测试 153
4.3.6开发过程小结 156
4.4 Python模块 157
4.4.1模块的创建和使用 157
4.4.2 Python程序架构 158
4.4.3标准库模块 159
4.4.4模块的有条件执行 161
习题 162
第5章 图形编程 164
5.1概述 164
5.1.1计算可视化 164
5.1.2图形是复杂数据 166
5.1.3用对象表示复杂数据 167
5.2 Tkinter图形编程 168
5.2.1导入模块及创建根窗口 168
5.2.2创建画布 169
5.2.3在画布上绘图 172
5.2.4图形的事件处理 183
5.3编程案例 185
5.3.1统计图表 185
5.3.2计算机动画 189
5.4软件的层次化设计:一个案例 193
5.4.1层次化体系结构 193
5.4.2案例:图形库graphics 194
5.4.3 graphics与面向对象 198
习题 201
第6章 大量数据的表示和处理 202
6.1概述 202
6.2有序的数据集合体 204
6.2.1字符串 205
6.2.2列表 206
6.23元组 210
6.3无序的数据集合体 212
6.3.1集合 212
6.3.2字典 215
6.4文件 217
6.4.1文件的基本概念 218
6.4.2文件操作 219
6.4.3编程案例:文本文件分析 224
6.4.4缓冲 228
6.4.5二进制文件与随机存取 229
6.5几种高级数据结构 231
6.5.1链表 231
6.5.2堆栈 236
6.5.3队列 239
习题 239
第7章 面向对象思想与编程 241
7.1数据与操作:两种观点 241
7.1.1面向过程观点 241
7.1.2面向对象观点 244
7.1.3类是类型概念的发展 246
7.2面向对象编程 248
7.2.1类的定义 248
7.2.2对象的创建 252
7.2.3对象方法的调用 254
7.2.4编程实例:模拟炮弹飞行 255
7.2.5类与模块化 261
7.2.6对象的集合体 263
7.3超类与子类 263
7.3.1继承 264
7.3.2覆写 267
7.3.3多态性 268
7.4面向对象设计 269
7.4.1一种基于词性分析的面向对象设计方法 269
7.4.2设计案例:扑克牌游戏 271
习题 274
第8章 图形用户界面 275
8.1图形用户界面概述 275
8.1.1程序的用户界面 275
8.1.2图形界面的组成 276
8.1.3事件驱动 278
8.2 GUI编程 279
8.2.1 GUI编程概述 279
8.2.2初识Tkinter 280
8.2.3常见GUI构件的用法 283
8.2.4布局 292
8.2.5对话框 297
8.3 Tkinter事件驱动编程 299
8.3.1事件和事件对象 299
8.3.2事件处理 301
8.4模型-视图设计方法 306
8.4.1将GUI应用程序封装成对象 306
8.4.2模型与视图 308
8.4.3编程案例:汇率换算器 309
习题 317
第9章 模拟与并发 318
9.1模拟 318
9.1.1计算机建模 318
9.1.2随机问题的建模与模拟 320
9.1.3编程案例:乒乓球比赛模拟 323
9.2原型法 328
9.3并行计算 330
9.3.1串行、并发与并行 330
9.3.2进程与线程 331
9.3.3多线程编程的应用 333
9.3.4 Python多线程编程 334
9.3.5小结 341
习题 342
第10章 算法设计和分析 343
10.1枚举法 343
10.2递归 347
10.3分治法 355
10.4贪心法 361
10.5算法分析 365
10.5.1算法复杂度 365
10.5.2算法分析实例 368
10.6不可计算的问题 371
习题 377
第11章 计算+X 378
11.1计算数学 378
11.2生物信息学 385
11.3计算物理学 387
11.4计算化学 389
11.5计算经济学 391
习题 391
附录 392
参考文献 406