内容介绍
树莓派是一个只有*大小的裸露电路板,它也是一个运行开源Linux操作系统的完全可编程的PC系统。树莓派的官方编程语言是Python,本书介绍了树莓派的Python编程方法。 本书共分7个部分。前6个部分介绍了树莓派编程环境、Python编程基础、高级Python知识、图形化编程、业务编程和树莓派Python项目;第7部分通过附录介绍了如何将Raspbian加载到SD卡上,并介绍了树莓派的各种版本和型号。 本书适合对Python编程感兴趣的读者和树莓派爱好者,也适合想要基于低成本Linux平台开发应用的用户。
作者介绍
Richard Blum拥有超过25年的系统和网络管理的经验。 他编写了很多关于Li n ux和开源方面的书籍,并且他还是一个 网页编程和Li n ux课程的在线讲师,他的课程被美国各地的大 学使用。他的书籍包括《Ubuntu Linux Secrets》《Linux for Dummies, 9th Edition》《PostgreSQL 8 for Windows》以及 《Professional Linux Programming》。 Christine Bresnahan作为系统管理员已有超过25年的工 作经验。现在她是常青藤技术社区学院的兼职教授,她教Python 编程、Linux系统管理以及计算机安全。她是《Linux Bible,8th E d i t i on》的合著者,并且她和Bl um一起共同创作了《Linux Command Line & Shell Scripting Bible, Second Edition》。
目录
- 第一部分 树莓派编程环境
- 第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