目录
第一部分 树莓派编程环境
第1章 配置树莓派 3
1.1 获取树莓派 3
1.1.1 了解树莓派的历史 3
1.1.2 为什么要学习用Python
在树莓派上进行编程 4
1.2 获取树莓派 5
1.3 哪些树莓派外围设备是必须的 6
1.3.1 microSD卡 6
1.3.2 电源 7
1.3.3 显示输出 8
1.3.4 键盘和鼠标 9
1.3.5 使用网线或者Wi-Fi
目录
第一部分 树莓派编程环境
第1章 配置树莓派 3
1.1 获取树莓派 3
1.1.1 了解树莓派的历史 3
1.1.2 为什么要学习用Python
在树莓派上进行编程 4
1.2 获取树莓派 5
1.3 哪些树莓派外围设备是必须的 6
1.3.1 microSD卡 6
1.3.2 电源 7
1.3.3 显示输出 8
1.3.4 键盘和鼠标 9
1.3.5 使用网线或者Wi-Fi
适配器 9
1.4 其他不错的外围设备 9
1.4.1 挑选一个外壳 10
1.4.2 移动电源 10
1.4.3 自供电USB集线器 11
1.5 决定如何购买外围设备 11
1.6 让你的树莓派正常工作 11
1.6.1 自己研究一下 11
1.6.2 安装软件 12
1.6.3 下载操作系统 12
1.6.4 移动NOOBS 13
1.6.5 连接外围设备 13
1.7 排除树莓派的故障 15
1.7.1 检查外设连接线 15
1.7.2 检查microSD卡 16
1.7.3 检查NOOBS的副本 16
1.7.4 检查显示器 16
1.7.5 检查你的外设 17
1.8 小结 17
1.9 Q&A 17
1.10 练习 17
1.10.1 问题 17
1.10.2 答案 18
第2章 认识Raspbian Linux发行版 19
2.1 了解Linux 19
2.2 使用Raspbian命令行 20
2.3 使用Raspbian图形用户界面 23
2.4 LXDE图形界面 24
LXPanel 25
2.5 小结 29
2.6 Q&A 29
2.7 练习 29
2.7.1 问题 29
2.7.2 答案 30
第3章 搭建编程环境 31
3.1 探索Python 31
3.1.1 Python简史 31
3.1.2 Python v3和Python v2 32
3.2 检查你的Python环境 32
3.2.1 检查Python解释器和
交互式shell 32
3.2.2 检查Python开发环境 33
3.2.3 检查文本编辑器 33
3.3 安装Python和工具 34
检查键盘 34
3.4 关于Python解释器 35
3.5 关于Python交互式shell 36
3.6 关于Python开发环境shell 38
IDLE开发环境shell 39
3.7 创建Python脚本 42
3.7.1 在交互式shell中运行
Python脚本 43
3.7.2 在IDLE中运行Python
脚本 43
3.7.3 使用IDLE创建一个
脚本 44
3.7.4 使用文本编辑器创建一个
Python脚本 45
3.8 使用适当的工具 46
3.9 小结 47
3.10 Q&A 47
3.11 练习 47
3.11.1 问题 47
3.11.2 答案 48
第二部分 Python编程基础
第4章 Python基础 51
4.1 Python脚本的输出 51
4.1.1 探索print函数 51
4.1.2 使用字符作为print的
参数 52
4.1.3 格式化print函数的输出 53
4.1.4 使用转义序列控制输出 54
4.1.5 好玩的东西 55
4.2 格式化脚本 56
4.2.1 长文本行 56
4.2.2 创建注释 57
4.3 理解Python变量 58
4.3.1 Python关键字 58
4.3.2 创建Python变量名 59
4.4 给Python变量赋值 59
4.4.1 格式化变量和字符串
输出 60
4.4.2 避免使用未赋值的变量 61
4.4.3 将长字符串赋值给变量 61
4.4.4 给变量赋予更多
类型的值 62
4.4.5 给变量重新赋值 62
4.5 关于Python数据类型 63
4.6 获取用户输入 64
4.7 小结 69
4.8 Q&A 69
4.9 练习 69
4.9.1 问题 69
4.9.2 答案 70
第5章 在程序中使用算术 71
5.1 使用数学运算符 71
5.1.1 Python数学操作符 71
5.1.2 运算符的优先级 73
5.1.3 在数学运算中使用变量 74
5.1.4 浮点数的精度 75
5.1.5 显示数字 75
5.1.6 运算符缩写 76
5.2 使用分数进行计算 76
5.2.1 分数对象 76
5.2.2 分数操作 77
5.3 使用复数 77
5.3.1 创建复数 77
5.3.2 复数运算 78
5.4 math模块的高级功能 78
5.4.1 数值函数 79
5.4.2 幂和对数函数 79
5.4.3 三角函数 80
5.4.4 双曲函数 80
5.4.5 统计数学函数 81
5.5 使用NumPy数学库 81
5.5.1 NumPy数据类型 81
5.5.2 创建NumPy数组 82
5.5.3 使用NumPy数组 83
5.6 小结 83
5.7 Q&A 84
5.8 练习 84
5.8.1 问题 84
5.8.2 答案 85
第6章 控制你的程序 86
6.1 使用if语句 86
6.2 组合多条语句 87
6.3 通过else语句添加其他条件 89
6.4 使用elif添加更多的条件 91
6.5 在Python中比较值 93
6.5.1 数字比较 93
6.5.2 字符串比较 94
6.5.3 布尔值比较 95
6.5.4 评估函数返回值 95
6.6 检查复杂的条件 97
6.6.1 使用逻辑运算符 97
6.6.2 组合条件检查 97
6.7 对条件检查取反 98
6.8 小结 98
6.9 Q&A 99
6.10 练习 99
6.10.1 问题 99
6.10.2 答案 100
第7章 循环 102
7.1 执行重复的任务 102
7.2 使用for循环进行迭代 102
7.2.1 遍历列表中的数字 103
7.2.2 注意一些“陷阱” 104
7.2.3 由值指定的数据类型 105
7.2.4 遍历字符串列表 106
7.2.5 使用变量进行遍历 107
7.2.6 使用range函数进行
迭代 107
7.3 使用while循环 111
7.3.1 使用数字条件来进行
迭代 111
7.3.2 使用字符串作为判断
条件进行遍历 112
7.3.3 使用while True 113
7.4 创建嵌套循环 116
7.5 小结 117
7.6 Q&A 117
7.7 练习 118
7.7.1 问题 118
7.7.2 答案 118
第三部分 高级Python知识
第8章 使用列表和元组 123
8.1 关于元组 123
8.1.1 创建元组 123
8.1.2 访问元组中的数据 124
8.1.3 访问一个范围内的值 125
8.1.4 使用元组 125
8.2 关于列表 127
8.2.1 创建一个列表 127
8.2.2 从列表中获取数据 128
8.2.3 使用列表 128
8.3 使用多维列表存储数据 133
8.4 在脚本中使用列表和元组 133
8.4.1 遍历一个列表或元组 133
8.4.2 排序和倒序 134
8.5 使用列表解析创建列表 134
8.6 关于range类型 135
8.7 小结 136
8.8 Q&A 136
8.9 练习 136
8.9.1 问题 136
8.9.2 答案 137
第9章 字典和集合 138
9.1 理解Python字典 138
9.2 字典基础 139
9.2.1 创建一个字典 139
9.2.2 填充字典 139
9.2.3 获取字典中的数据 140
9.2.4 更新一个字典 142
9.2.5 管理一个字典 143
9.3 用字典编程 143
9.4 理解Python集合 148
9.5 集合基础 149
填充集合 149
9.6 从集合获取信息 150
9.6.1 集合成员 150
9.6.2 并集 150
9.6.3 交集 151
9.6.4 差集 151
9.6.5 对称差集 152
9.6.6 遍历集合 152
9.7 修改一个集合 153
9.8 用集合编程 154
9.9 小结 157
9.10 Q&A 157
9.11 练习 157
9.11.1 问题 157
9.11.2 答案 158
第10章 使用字符串 159
10.1 字符串的基础知识 159
10.1.1 字符串格式 159
10.1.2 创建字符串 160
10.1.3 处理字符串 161
10.2 使用函数操作字符串 162
10.2.1 改变字符串值 162
10.2.2 分割字符串 163
10.2.3 连接字符串 163
10.2.4 测试字符串 164
10.2.5 查找字符串 165
10.3 格式化字符串输出 166
10.3.1 format()函数 167
10.3.2 格式化数字 168
10.4 小结 170
10.5 Q&A 171
10.6 练习 171
10.6.1 问题 171
10.6.2 答案 171
第11章 使用文件 173
11.1 理解Linux文件结构 173
看一下Linux目录 174
11.2 通过Python管理文件和
目录 175
11.3 打开文件 176
11.3.1 指定打开模式 177
11.3.2 使用文件对象方法 178
11.4 读取文件 179
11.4.1 读取整个文件 179
11.4.2 逐行读取文件 180
11.4.3 不按顺序读取文件 181
11.5 关闭一个文件 185
11.6 写文件 185
11.6.1 创建并且写入一个
新文件 185
11.6.2 写入到已有的文件 188
11.7 小结 190
11.8 Q&A 190
11.9 练习 190
11.9.1 问题 190
11.9.2 答案 191
第12章 创建函数 192
12.1 在程序中使用Python函数 192
12.1.1 创建函数 193
12.1.2 使用函数 193
12.2 返回值 195
12.3 给函数传值 196
12.3.1 传递参数 196
12.3.2 设置参数的默认值 198
12.3.3 处理可变数量的参数 199
12.3.4 使用字典检索值 200
12.4 在函数中处理变量 201
12.4.1 局部变量 201
12.4.2 全局变量 202
12.5 在函数中使用列表 203
12.6 递归函数 204
12.7 小结 205
12.8 Q&A 205
12.9 练习 206
12.9.1 问题 206
12.9.2 答案 206
第13章 使用模块 207
13.1 介绍模块概念 207
13.2 探索标准模块 209
13.3 学习Python模块 210
13.4 创建定制的模块 214
13.4.1 创建或收集函数放到
一起 214
13.4.2 确定模块的名称 214
13.4.3 在测试目录中创建
自定义模块 215
13.4.4 测试自定义模块 215
13.4.5 将模块移动到生产
目录 216
13.4.6 检查路径,如果需要则
修改 218
13.4.7 测试生产级别自定义
模块 219
13.5 小结 222
13.6 Q&A 222
13.7 练习 222
13.7.1 问题 222
13.7.2 答案 223
第14章 探索面向对象编程的世界 224
14.1 理解面向对象编程基础 224
14.1.1 什么是OOP 224
14.1.2 定义一个类 225
14.1.3 创建一个实例 225
14.1.4 默认属性值 226
14.2 定义类方法 227
14.2.1 设值方法 227
14.2.2 访问方法 228
14.2.3 添加辅助方法 229
14.3 使用类模块共享你的代码 233
14.4 小结 235
14.5 Q&A 235
14.6 练习 235
14.6.1 问题 235
14.6.2 答案 236
第15章 使用继承 237
15.1 了解类的问题 237
15.2 理解子类和继承 238
15.3 在Python中使用继承 239
15.3.1 创建子类 240
15.3.2 将子类添加到对象
模块文件中 241
15.3.3 添加其他子类 242
15.3.4 将子类方法放到它自己的
对象模块文件中 243
15.4 在Python脚本中使用继承 244
15.5 小结 254
15.6 Q&A 255
15.7 练习 255
15.7.1 问题 255
15.7.2 答案 256
第16章 正则表达式 257
16.1 什么是正则表达式 257
16.1.1 定义正则表达式 257
16.1.2 正则表达式的类型 258
16.2 在Python中使用正则表达式 258
16.3 match()函数 259
16.4 search()函数 259
16.5 findall()函数和finditer()函数 259
16.6 定义基本的模式 261
16.6.1 纯文本 261
16.6.2 特殊字符 262
16.6.3 锚字符 262
16.6.4 点字符 264
16.6.5 字符分类 264
16.6.6 字符分类取反 266
16.6.7 使用范围 266
16.6.8 星号 267
16.7 使用高级正则表达式特性 267
16.7.1 问号 268
16.7.2 加号 268
16.7.3 使用大括号 268
16.7.4 管道符号 269
16.7.5 分组表达式 269
16.8 在Python脚本中使用正则
表达式 269
16.9 小结 271
16.10 Q&A 272
16.11 练习 272
16.11.1 问题 272
16.11.2 答案 273
第17章 异常处理 274
17.1 理解异常 274
17.1.1 语法错误异常 274
17.1.2 运行时错误异常 276
17.2 处理异常 278
17.3 处理多个异常 280
17.3.1 创建多个try except
语句块 282
17.3.2 处理通用的异常 284
17.3.3 理解try except语句的
选项 285
17.4 小结 290
17.5 Q&A 290
17.6 练习 290
17.6.1 问题 290
17.6.2 答案 291
第四部分 图形化编程
第18章 GUI编程 295
18.1 为GUI环境编程 295
18.1.1 视窗接口 295
18.1.2 事件驱动编程 296
18.2 Python的GUI包 297
18.3 使用tkinter包 297
18.3.1 创建一个窗口 297
18.3.2 向窗口添加控件 299
18.3.3 定义事件处理程序 302
18.4 tkinter控件 304
18.4.1 使用Label控件 304
18.4.2 添加Button控件 304
18.4.3 使用Checkbutton控件 304
18.4.4 使用Entry控件 306
18.4.5 添加Text控件 307
18.4.6 使用ListBox控件 309
18.4.7 使用Menu控件 310
18.5 小结 313
18.6 Q&A 313
18.7 练习 313
18.7.1 问题 313
18.7.2 答案 314
第19章 游戏编程 315
19.1 理解游戏编程 315
19.2 了解游戏相关的工具 316
19.3 配置PyGame库 317
检查PyGame 317
19.4 使用PyGame 317
19.4.1 加载和初始化PyGame 319
19.4.2 配置游戏屏幕 320
19.4.3 在游戏画面中放置
文本 321
19.5 学习PyGame的更多内容 324
19.5.1 一直在游戏中 324
19.5.2 绘制图像和形状 325
19.5.3 在游戏中使用声音 327
19.6 处理PyGame动作 328
19.6.1 在游戏画面中移动图形 328
19.6.2 与游戏画面中的图形
交互 329
19.7 小结 336
19.8 Q&A 336
19.9 练习 336
19.9.1 问题 336
19.9.2 答案 337
第五部分 业务编程
第20章 使用网络 341
20.1 查找Python的网络模块 341
20.2 与邮件服务器一起工作 342
20.2.1 Linux世界中的邮件 342
20.2.2 smtplib库 344
20.2.3 使用smtplib库 345
20.3 与网页服务器一起工作 348
20.3.1 获取网页 348
20.3.2 解析网页数据 349
20.4 使用套接字编程连接应用
程序 352
20.4.1 什么是套接字编程 353
20.4.2 Python的socket模块 353
20.4.3 创建服务器程序 354
20.4.4 创建客户端程序 356
20.4.5 运行客户端/服务器
示例 357
20.5 小结 358
20.6 Q&A 358
20.7 练习 358
20.7.1 问题 358
20.7.2 答案 359
第21章 在程序中使用数据库 361
21.1 使用MySQL数据库 361
21.1.1 安装MySQL 361
21.1.2 配置MySQL环境 362
21.1.3 安装Python的MySQL
模块 366
21.1.4 创建Python脚本 367
21.2 使用PostgreSQL数据库 370
21.2.1 安装PostgreSQL 370
21.2.2 配置PostgreSQL环境 370
21.2.3 安装Python的
PostgreSQL模块 373
21.2.4 用psycopg2编写
代码 374
21.3 小结 376
21.4 Q&A 376
21.5 练习 376
21.5.1 问题 376
21.5.2 答案 377
第22章 Web编程 379
22.1 在树莓派上运行Web服务器 379
22.1.1 安装Apache Web
服务器 380
22.1.2 提供HTML文件 381
22.2 公共网关接口编程 382
22.2.1 什么是CGI 382
22.2.2 运行Python程序 382
22.3 扩展Python网页 384
22.3.1 格式化输出 384
22.3.2 使用动态网页 385
22.3.3 调试Python程序 387
22.4 处理表单 389
22.4.1 创建网页表单 390
22.4.2 cgi模块 391
22.5 小结 393
22.6 Q&A 394
22.7 练习 394
22.7.1 问题 394
22.7.2 答案 395
第六部分 树莓派Python项目
第23章 创建基础的树莓派Python
项目 399
23.1 思考基础的树莓派Python
项目 399
23.2 通过Python显示高清
图片 399
23.2.1 理解高分辨率 400
23.2.2 使用脚本演示图像 401
23.2.3 配置演示画面 402
23.2.4 查找图片 402
23.2.5 在可移动的驱动器上
存储照片 403
23.2.6 缩放照片 406
23.2.7 照片居中 407
23.2.8 照片取景 407
23.2.9 提高演示速度 409
23.2.10 潜在的脚本修改 414
23.3 播放音乐 415
23.3.1 创建基本的音乐脚本 415
23.3.2 将音乐存储在可移动的
硬盘上 416
23.3.3 使用音乐播放列表 416
23.3.4 控制回放 417
23.3.5 让播放列表随机播放 421
23.3.6 创建一个特殊的
演示 422
23.4 小结 426
23.5 Q&A 426
23.6 练习 426
23.6.1 问题 426
23.6.2 答案 427
第24章 树莓派/Python高级项目 428
24.1 探索GPIO接口 428
24.1.1 什么是GPIO接口 428
24.1.2 GPIO引脚布局 429
24.1.3 连接GPIO 430
24.2 使用RPi.GPIO模块 433
24.2.1 安装RPi.GPIO 433
24.2.2 启动方法 433
24.3 控制GPIO输出 434
24.3.1 配置硬件来查看GPIO
输出 434
24.3.2 测试GPIO输出 436
24.3.3 闪烁LED 437
24.3.4 创建一个花式的
闪光灯 437
24.4 检测GPIO输入 438
24.4.1 配置检测输入的
硬件 438
24.4.2 处理输入信号 440
24.4.3 输入轮询 441
24.4.4 输入事件 442
24.5 小结 444
24.6 Q&A 444
24.7 练习 444
24.7.1 问题 444
24.7.2 答案 445
第七部分 附录
附录A 将Raspbian操作系统加载到
SD卡上 449
A.1 下载NOOBS 450
A.2 验证NOOBS校验和 451
A.2.1 在Linux上检查校验和 451
A.2.2 在Windows上检查
校验和 451
A.2.3 在OS X上检查
校验和 452
A.3 解压缩NOOBS Zip文件 452
A.3.1 在Linux上解压缩一个
ZIP文件 452
A.3.2 在Windows上解压缩
一个ZIP文件 453
A.3.3 在OS X上解压缩一个
ZIP文件 453
A.4 格式化MicroSD卡 453
A.4.1 在Linux上格式化
一个MicroSD卡 453
A.4.2 在Windows上格式化
一个MicroSD卡 455
A.4.3 在OS X上格式化一个
microSD卡 455
A.5 将NOOBS复制到一个MicroSD
卡中 456
附录B 树莓派型号一览 457
B.1 树莓派2 B型号 457
B.2 树莓派1 B+型号 458
B.3 树莓派1 A+型号 458
B.4 较早的树莓派型号 459