第 一部分 搭上你的Python马车
第 1章 用turtle模块绘制多边形 2
1.1 Python的turtle模块 2
1.1.1 导入turtle模块 3
1.1.2 让小海龟动起来 3
1.1.3 改变方向 5
1.2 用循环使代码重复运行 5
1.2.1 使用for循环 6
1.2.2 运用for循环画一个正方形 7
1.3 用函数创建快捷操作 8
1.4 利用变量画出不同的图形 9
1.4.1 在函数中使用变量 10
1.4.2 变量错误 10
1.5 等边三角形 11
1.5.1 编写triangle()函数 12
1.5.2 让变量变起来 12
1.6 小结 15
第 2章 用列表和循环把烦琐的算术变有趣 17
2.1 基本运算符 17
2.1.1 变量运算 18
2.1.2 用运算符编写函数average() 19
2.1.3 注意运算顺序 19
2.1.4 结合使用括号和运算符 19
2.2 Python中的数据类型 20
2.2.1 整数和浮点数 20
2.2.2 字符串 20
2.2.3 布尔类型 22
2.2.4 查看数据类型 22
2.3 用列表存储值 23
2.3.1 向列表添加项 23
2.3.2 列表的运算 24
2.3.3 从列表中删除项 25
2.4 在循环中使用列表 25
2.4.1 使用列表索引访问单个项 26
2.4.2 用enumerate()函数获取索引和值 26
2.4.3 索引从0开始 27
2.4.4 访问一系列列表项 27
2.4.5 查找某项的索引 28
2.4.6 字符串也有索引 29
2.5 求和 29
2.5.1 创建running_sum变量 30
2.5.2 编写mySum()函数 30
2.6 求一列数的平均值 32
2.7 小结 33
第3章 用条件语句检验猜测 34
3.1 比较运算符 34
3.2 用if和else语句做决定 35
3.3 使用条件语句求因数 36
3.3.1 编写factors.py程序 37
3.3.2 海龟漫步 38
3.4 制作一个猜数游戏 40
3.4.1 制作一个随机数生成器 41
3.4.2 读取用户输入 41
3.4.3 将用户输入转换成整数 42
3.4.4 用条件语句检查猜测是否正确 42
3.4.5 用循环给予更多猜测机会 43
3.4.6 猜数小提示 44
3.5 计算平方根 45
3.5.1 套用猜数游戏的逻辑 45
3.5.2 编写squareRoot()函数 46
3.6 小结 47
第4章 用代数学变换和存储数 50
4.1 解一次方程 51
4.1.1 一次方程的解法公式 52
4.1.2 编写equation()函数 53
4.1.3 用print()替换return 53
4.2 解更高次的方程 55
4.2.1 用quad()函数解二次方程 56
4.2.2 用plug()函数解三次方程 57
4.3 用作图法解方程 58
4.3.1 Processing入门 58
4.3.2 制作你自己的作图工具 59
4.3.3 绘制方程的图像 66
4.3.4 用“猜测检验法”求根 70
4.3.5 编写guess()函数 70
4.4 小结 72
第5章 用几何学变换形状 73
5.1 画一个圆 73
5.2 用坐标指定位置 75
5.3 变换函数 76
5.3.1 用translate()函数平移对象 76
5.3.2 用rotate()旋转对象 79
5.3.3 画一圈圆 80
5.3.4 画一圈正方形 81
5.4 使对象动画化 82
5.4.1 创建变量t 82
5.4.2 旋转各个正方形 83
5.4.3 用pushMatrix()和popMatrix()保存方位 84
5.4.4 使正方形绕中心旋转 85
5.5 制作一个可交互的彩虹网格 86
5.5.1 画出呈网格状排列的对象 86
5.5.2 给对象涂上彩虹色 87
5.6 用三角形画出复杂的图案 89
5.6.1 30-60-90三角形 91
5.6.2 画一个等边三角形 92
5.6.3 画多个旋转的三角形 94
5.6.4 给旋转加上相位偏移 95
5.6.5 将图案画完 96
5.7 小结 98
第6章 用三角学制造振荡 99
6.1 用三角学做旋转和振荡 101
6.2 编写画多边形的函数 102
6.2.1 用循环画一个正六边形 103
6.2.2 画一个正三角形 105
6.3 画正弦波 106
6.3.1 圆过留痕 109
6.3.2 使用Python内置的enumerate()函数 110
6.4 编写万花尺程序 112
6.4.1 画小圆 113
6.4.2 旋转小圆 113
6.5 画谐波图 116
6.5.1 编写画谐波图的程序 117
6.5.2 瞬间填好列表 119
6.5.3 两个钟摆比一个强 120
6.6 小结 122
第7章 复数 123
7.1 复数坐标系 124
7.2 将复数相加 124
7.3 将一个复数乘以i 125
7.4 将两个复数相乘 126
7.5 编写magnitude()函数 127
7.6 创建芒德布罗集 128
7.6.1 编写mandelbrot()函数 130
7.6.2 给芒德布罗集上色 134
7.7 创建茹利亚集 135
7.8 小结 137
第8章 将矩阵用于计算机图形和方程组 138
8.1 什么是矩阵 138
8.2 矩阵相加 139
8.3 矩阵相乘 140
8.4 矩阵乘法中的顺序很重要 144
8.5 画2D形状 144
8.6 变换矩阵 147
8.7 转置矩阵 149
8.8 实时旋转矩阵 152
8.9 制作3D形状 154
8.10 制作旋转矩阵 155
8.11 用矩阵解方程组 159
8.11.1 高斯消元法 159
8.11.2 编写gauss()函数 161
8.12 小结 165
第9章 用类构建对象 168
9.1 弹跳球程序 170
9.1.1 让小球动起来 171
9.1.2 让小球从墙上弹回 172
9.1.3 不用类创建多个小球 173
9.1.4 用类创建对象 174
9.2 “羊吃草”程序 179
9.2.1 编写表示小羊的类 179
9.2.2 让小羊四处走动. 180
9.2.3 添加能量属性 181
9.2.4 用类创建草 182
9.2.5 让草被吃掉后变成棕色 185
9.2.6 给每只小羊涂上随机的颜色 187
9.2.7 让小羊繁殖 188
9.2.8 让草再生 189
9.2.9 给予进化优势 190
9.3 小结 191
第 10章 用递归制作分形 193
10.1 海岸线的长度 194
10.1.1 何为递归 195
10.1.2 编写factorial()函数 195
10.1.3 “种”一棵分形树 196
10.2 科赫雪花 200
10.3 谢尔宾斯基三角形 205
10.4 正方形分形 207
10.5 龙形曲线 211
10.6 小结 215
第 11章 元胞自动机 216
11.1 创建一个元胞自动机 217
11.1.1 编写一个细胞类 219
11.1.2 调整细胞大小 221
11.1.3 让CA生长 222
11.1.4 将细胞放入一个矩阵 223
11.1.5 创建细胞列表 224
11.2 奇怪的Python列表 225
11.2.1 列表切片 226
11.2.2 让你的CA自动生长 229
11.3 玩玩“生命游戏” 229
11.4 初等元胞自动机 232
11.5 小结 237
第 12章 用遗传算法解决问题 238
12.1 用遗传算法猜出句子 239
12.1.1 编写makeList()函数 239
12.1.2 测试makeList()函数 240
12.1.3 编写score()函数 241
12.1.4 编写mutate()函数 241
12.1.5 生成随机数 242
12.2 解决旅行商问题 244
12.2.1 使用遗传算法 245
12.2.2 编写calcLength()方法 251
12.2.3 测试calcLength()方法 251
12.2.4 随机路线 252
12.2.5 运用猜句程序的突变思想 255
12.2.6 突变列表中的两个数 255
12.2.7 通过交叉改进路线 259
12.3 小结 261