目录
第一部分树莓派编程环境
第1章配置树莓派3
1.1获取树莓派3
1.1.1了解树莓派的历史3
1.1.2为什么要学习用Python
在树莓派上进行编程4
1.2获取树莓派5
1.3哪些树莓派外围设备是必须的6
1.3.1microSD卡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.1microSD卡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移动NOOBS13
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.9Q&A17
1.10练习17
1.10.1问题17
1.10.2答案18
第2章认识Raspbian Linux发行版19
2.1了解Linux19
2.2使用Raspbian命令行20
2.3使用Raspbian图形用户界面23
2.4LXDE图形界面24
LXPanel25
2.5小结29
2.6Q&A29
2.7练习29
2.7.1问题29
2.7.2答案30
第3章搭建编程环境31
3.1探索Python31
3.1.1Python简史31
3.1.2Python v3和Python v232
3.2检查你的Python环境32
3.2.1检查Python解释器和
交互式shell32
3.2.2检查Python开发环境33
3.2.3检查文本编辑器33
3.3安装Python和工具34
检查键盘34
3.4关于Python解释器35
3.5关于Python交互式shell36
3.6关于Python开发环境shell38
IDLE开发环境shell39
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.10Q&A47
3.11练习47
3.11.1问题47
3.11.2答案48
第二部分Python编程基础
第4章Python基础51
4.1Python脚本的输出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.1Python关键字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.8Q&A69
4.9练习69
4.9.1问题69
4.9.2答案70
第5章在程序中使用算术71
5.1使用数学运算符71
5.1.1Python数学操作符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.4math模块的高级功能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.1NumPy数据类型81
5.5.2创建NumPy数组82
5.5.3使用NumPy数组83
5.6小结83
5.7Q&A84
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.9Q&A99
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 True113
7.4创建嵌套循环116
7.5小结117
7.6Q&A117
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.8Q&A136
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.10Q&A157
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.1format()函数167
10.3.2格式化数字168
10.4小结170
10.5Q&A171
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.8Q&A190
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.8Q&A205
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.6Q&A222
13.7练习222
13.7.1问题222
13.7.2答案223
第14章探索面向对象编程的世界224
14.1理解面向对象编程基础224
14.1.1什么是OOP224
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.5Q&A235
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.6Q&A255
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.3match()函数259
16.4search()函数259
16.5findall()函数和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.10Q&A272
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.5Q&A290
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.2Python的GUI包297
18.3使用tkinter包297
18.3.1创建一个窗口297
18.3.2向窗口添加控件299
18.3.3定义事件处理程序302
18.4tkinter控件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.6Q&A313
18.7练习313
18.7.1问题313
18.7.2答案314
第19章游戏编程315
19.1理解游戏编程315
19.2了解游戏相关的工具316
19.3配置PyGame库317
检查PyGame317
19.4使用PyGame317
19.4.1加载和初始化PyGame319
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.8Q&A336
19.9练习336
19.9.1问题336
19.9.2答案337
第五部分业务编程
第20章使用网络341
20.1查找Python的网络模块341
20.2与邮件服务器一起工作342
20.2.1Linux世界中的邮件342
20.2.2smtplib库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.2Python的socket模块353
20.4.3创建服务器程序354
20.4.4创建客户端程序356
20.4.5运行客户端/服务器
示例357
20.5小结358
20.6Q&A358
20.7练习358
20.7.1问题358
20.7.2答案359
第21章在程序中使用数据库361
21.1使用MySQL数据库361
21.1.1安装MySQL361
21.1.2配置MySQL环境362
21.1.3安装Python的MySQL
模块366
21.1.4创建Python脚本367
21.2使用PostgreSQL数据库370
21.2.1安装PostgreSQL370
21.2.2配置PostgreSQL环境370
21.2.3安装Python的
PostgreSQL模块373
21.2.4用psycopg2编写
代码374
21.3小结376
21.4Q&A376
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什么是CGI382
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.2cgi模块391
22.5小结393
22.6Q&A394
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.5Q&A426
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.2GPIO引脚布局429
24.1.3连接GPIO430
24.2使用RPi.GPIO模块433
24.2.1安装RPi.GPIO433
24.2.2启动方法433
24.3控制GPIO输出434
24.3.1配置硬件来查看GPIO
输出434
24.3.2测试GPIO输出436
24.3.3闪烁LED437
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.6Q&A444
24.7练习444
24.7.1问题444
24.7.2答案445
第七部分附录
附录A将Raspbian操作系统加载到
SD卡上449
A.1下载NOOBS450
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