第1章 就这么愉快地开始吧 1
1.1 获得Python 1
1.2 从IDLE启动Python 2
1.3 失败的尝试 3
1.4 尝试点儿新的东西 3
1.5 为什么会这样 4
第2章 用Python设计第一个游戏 5
2.1 第一个小游戏 5
2.2 缩进 6
2.3 BIF 6
第3章 成为高手前必须知道的一些基础知识 8
3.1 变量 8
3.2 字符串 9
3.3 原始字符串 10
3.4 长字符串 11
3.5 改进我们的小游戏 12
3.6 条件分支 12
3.7 while循环 13
3.8 引入外援 14
3.9 闲聊数据类型 15
3.9.1 整型 15
3.9.2 浮点型 16
3.9.3 布尔类型 16
3.9.4 类型转换 16
3.9.5 获得关于类型的信息 17
3.10 常用操作符 18
3.10.1 算术操作符 18
3.10.2 优先级问题 19
3.10.3 比较操作符 19
3.10.4 逻辑操作符 20
第4章 了不起的分支和循环 21
4.1 分支和循环 21
4.2 课堂小练习 23
4.3 结果分析 24
4.4 Python可以有效避免“悬挂else” 24
4.5 条件表达式(三元操作符) 24
4.6 断言 25
4.7 while循环语句 25
4.8 for循环语句 26
4.9 range() 26
4.10 break语句 27
4.11 continue语句 27
第5章 列表、元组和字符串 29
5.1 列表:一个“打了激素”的数组 29
5.1.1 创建列表 29
5.1.2 向列表添加元素 29
5.1.3 从列表中获取元素 31
5.1.4 从列表删除元素 31
5.1.5 列表分片 32
5.1.6 列表分片的进阶玩法 33
5.1.7 一些常用操作符 33
5.1.8 列表的小伙伴们 35
5.1.9 关于分片“拷贝”概念的补充 36
5.2 元组:戴上了枷锁的列表 37
5.2.1 创建和访问一个元组 37
5.2.2 更新和删除元组 39
5.3 字符串 39
5.3.1 各种内置方法 40
5.3.2 格式化 43
5.4 序列 46
第6章 函数 50
6.1 Python的乐高积木 50
6.1.1 创建和调用函数 50
6.1.2 函数的参数 51
6.1.3 函数的返回值 52
6.2 灵活即强大 52
6.2.1 形参和实参 52
6.2.2 函数文档 52
6.2.3 关键字参数 53
6.2.4 默认参数 53
6.2.5 收集参数 54
6.3 我的地盘听我的 55
6.3.1 函数和过程 55
6.3.2 再谈谈返回值 56
6.3.3 函数变量的作用域 56
6.4 内嵌函数和闭包 58
6.4.1 global关键字 58
6.4.2 内嵌函数 59
6.4.3 闭包(closure) 60
6.5 lambda表达式 62
6.6 递归 64
6.6.1 递归是“神马” 64
6.6.2 写一个求阶乘的函数 66
6.6.3 这帮小兔崽子 68
6.6.4 汉诺塔 70
第7章 字典和集合 72
7.1 字典:当索引不好用时 72
7.1.1 创建和访问字典 72
7.1.2 各种内置方法 74
7.2 集合:在我的世界里,你就是唯一 77
7.2.1 创建集合 78
7.2.2 访问集合 79
7.2.3 不可变集合 79
第8章 永久存储 80
8.1 文件:因为懂你,所以永恒 80
8.1.1 打开文件 80
8.1.2 文件对象的方法 81
8.1.3 文件的关闭 81
8.1.4 文件的读取和定位 82
8.1.5 文件的写入 83
8.1.6 一个任务 83
8.2 文件系统:介绍一个高大上的东西 85
8.3 pickle:腌制一缸美味的泡菜 91
第9章 异常处理 93
9.1 你不可能总是对的 93
9.2 try-except语句 95
9.2.1 针对不同异常设置多个except 96
9.2.2 对多个异常统一处理 97
9.2.3 捕获所有异常 97
9.3 try-finally语句 97
9.4 raise语句 98
9.5 丰富的else语句 98
9.6 简洁的with语句 99
第10章 图形用户界面入门 101
10.1 导入EasyGui 102
10.2 使用EasyGui 102
10.3 修改默认设置 104
第11章 类和对象 105
11.1 给大家介绍对象 105
11.2 对象=属性+方法 105
11.3 面向对象编程 106
11.3.1 self是什么 107
11.3.2 你听说过Python的魔法方法吗 107
11.3.3 公有和私有 108
11.4 继承 109
11.4.1 调用未绑定的父类方法 111
11.4.2 使用super函数 112
11.5 多重继承 112
11.6 组合 113
11.7 类、类对象和实例对象 114
11.8 到底什么是绑定 115
11.9 一些相关的BIF 116
第12章 魔法方法 120
12.1 构造和析构 120
12.1.1 __init(self[,…]) 120
12.1.2 __new__(cls[,…]) 121
12.1.3 __del__(self) 122
12.2 算术运算 122
12.2.1 算术操作符 123
12.2.2 反运算 125
12.2.3 增量赋值运算 126
12.2.4 一元操作符 126
12.3 简单定制 126
12.4 属性访问 131
12.5 描述符(property的原理) 135
12.6 定制序列 137
12.7 迭代器 139
12.8 生成器(乱入) 142
第13章 模块 145
13.1 模块就是程序 145
13.2 命名空间 146
13.3 导入模块 146
13.4 name=’main’ 147
13.5 搜索路径 149
13.6 包 150
13.7 像个极客一样去思考 150
第14章 论一只爬虫的自我修养 157
14.1 入门 157
14.2 实战 159
14.2.1 下载一只猫 159
14.2.2 翻译文本 161
14.3 隐藏 166
14.3.1 修改User-Agent 166
14.3.2 延迟提交数据 168
14.3.3 使用代理 169
14.4 Beautiful Soup 171
14.5 正则表达式 174
14.5.1 re模块 175
14.5.2 通配符 175
14.5.3 反斜杠 175
14.5.4 字符类 176
14.5.5 重复匹配 177
14.5.6 特殊符号及用法 178
14.5.7 元字符 180
14.5.8 贪婪和非贪婪 182
14.5.9 反斜杠+普通字母=特殊含义 183
14.5.10 编译正则表达式 184
14.5.11 编译标志 184
14.5.12 实用的方法 185
14.6 异常处理 190
14.6.1 URLError 190
14.6.2 HTTPError 191
14.6.3 处理异常 193
14.7 安装Scrapy 194
14.8 Scrapy爬虫之初窥门径 196
14.8.1 Scrapy框架 196
14.8.2 创建一个Scrapy项目 198
14.8.3 定义Item容器 198
14.8.4 编写爬虫 199
14.8.5 爬 199
14.8.6 取 201
14.8.7 在Shell中尝试Selector选择器 201
14.8.8 使用XPath 203
14.8.9 提取数据 203
14.8.10 使用item 206
14.8.11 存储内容 207
第15章 GUI的最终选择:Tkinter 208
15.1 Tkinter之初体验 208
15.2 Label组件 210
15.3 Button组件 212
15.4 Checkbutton组件 213
15.5 Radiobutton组件 214
15.6 LabelFrame组件 215
15.7 Entry组件 216
15.8 Listbox组件 221
15.9 Scrollbar组件 223
15.10 Scale组件 224
15.11 Text组件 225
15.11.1 Indexes用法 227
15.11.2 Marks用法 229
15.11.3 Tags用法 231
15.12 Canvas组件 237
15.13 Menu组件 242
15.14 Menubutton组件 245
15.15 OptionMenu组件 246
15.16 Message组件 247
15.17 Spinbox组件 248
15.18 PanedWindow组件 248
15.19 Toplevel组件 250
15.20 事件绑定 252
15.21 事件序列 254
15.21.1 type 254
15.21.2 modifier 255
15.22 Event对象 256
15.23 布局管理器 258
15.23.1 pack 258
15.23.2 grid 259
15.23.3 place 261
15.24 标准对话框 262
15.24.1 messagebox(消息对话框) 262
15.24.2 filedialog(文件对话框) 265
15.24.3 colorchooser(颜色选择对话框) 266
第16章 Pygame:游戏开发 268
16.1 安装Pygame 268
16.2 初步尝试 269
16.3 解惑 271
16.3.1 什么是Surface对象 271
16.3.2 将一个图像绘制到另一个图像上是怎么一回事 272
16.3.3 移动图像是怎么一回事 273
16.3.4 如何控制游戏的速度 273
16.3.5 Pygame的效率高不高 273
16.3.6 我应该从哪里获得帮助 274
16.4 事件 274
16.5 提高游戏的颜值 277
16.5.1 显示模式 277
16.5.2 全屏才是王道 278
16.5.3 使窗口尺寸可变 279
16.5.4 图像的变换 279
16.5.5 裁剪图像 281
16.5.6 转换图片 287
16.5.7 透明度分析 287
16.6 绘制基本图形 291
16.6.1 绘制矩形 292
16.6.2 绘制多边形 293
16.6.3 绘制圆形 293
16.6.4 绘制椭圆形 294
16.6.5 绘制弧线 294
16.6.6 绘制线段 295
16.7 动画精灵 296
16.7.1 创建精灵 298
16.7.2 移动精灵 299
16.8 碰撞检测 301
16.8.1 尝试自己写碰撞检测函数 301
16.8.2 sprite模块提供的碰撞检测函数 303
16.8.3 实现完美碰撞检测 304
16.9 播放声音和音效 305
16.10 响应鼠标 308
16.10.1 设置鼠标的位置 308
16.10.2 自定义鼠标光标 309
16.10.3 让小球响应光标的移动频率 311
16.11 响应键盘 313
16.12 结束游戏 314
16.12.1 发生碰撞后获得随机速度 314
16.12.2 减少“抖动”现象的发生 315
16.12.3 游戏胜利 317
16.12.4 更好地结束游戏 318
16.13 经典飞机大战 319
16.13.1 游戏设定 319
16.13.2 主模块 320
16.13.3 我方飞机 322
16.13.4 响应键盘 322
16.13.5 飞行效果 323
16.13.6 敌方飞机 324
16.13.7 提升敌机速度 325
16.13.8 碰撞检测 326
16.13.9 完美碰撞检测 329
16.13.10 一个BUG 330
16.13.11 发射子弹 331
16.13.12 设置敌机“血槽” 333
16.13.13 中弹效果 335
16.13.14 绘制得分 336
16.13.15 暂停游戏 337
16.13.16 控制难度 338
16.13.17 全屏炸弹 339
16.13.18 发放补给包 340
16.13.19 超级子弹 343
16.13.20 三次机会 344
16.13.21 结束画面 347
参考文献 350