5给自己留下有用的笔记20
2.5.1如何添加注释20
2.5.2约定与抱怨21
2.6总结和更多学习资源22
第3章字符串与字符串方法23
3.1什么是字符串23
3.1.1字符串类型23
3.1.2字符串字面量24
3.1.3确定字符串的长度26
3.1.4多行字符串26
3.1.5巩固练习28
3.2拼接、索引、切片28
3.2.1拼接字符串28
3.2.2索引字符串29
3.2.3字符串切片30
3.2.4字符串是不可变的33
3.2.5巩固练习34
3.3利用字符串方法操作字符串34
3.3.1大小写转换34
3.3.2移除字符串中的空白字符35
3.3.3判断字符串是否以某个字符串开头或结尾36
3.3.4字符串方法与不可变性37
3.3.5利用IDLE探索其他的字符串方法37
3.3.6巩固练习38
3.4与用户输入交互38
3.5挑战:分析用户输入40
3.6处理字符串和数字40
3.6.1在字符串上使用算术运算符40
3.6.2将字符串转换为数字42
3.6.3将数字转换为字符串43
3.6.4巩固练习43
3.7让输出语句更流畅44
3.8在字符串中查找字符串45
3.9挑战:把你的用户变成菁瑛骇氪47
3.10总结和更多学习资源48
第4章数字与数学49
4.1整数与浮点数49
4.1.1整数49
4.1.2浮点数50
4.1.3巩固练习52
4.2算术运算符和表达式52
4.2.1加法52
4.2.2减法53
4.2.3乘法54
4.2.4除法54
4.2.5整数除法54
4.2.6指数55
4.2.7求模运算符56
4.2.8算术表达式57
4.3挑战:计算用户输入的数据58
4.4让Python对你说谎58
4.5数学函数和数字方法59
4.5.1round()函数59
4.5.2abs()函数61
4.5.3pow()函数61
4.5.4检查浮点数是否为整数62
4.5.5巩固练习62
4.6改变数字的输出样式63
4.7复数65
4.8总结和更多学习资源67
第5章函数和循环69
5.1函数到底是什么69
5.1.1函数即值69
5.1.2Python如何执行函数71
5.1.3函数可能会产生副作用72
5.2编写自己的函数72
5.2.1函数的结构73
5.2.2调用用户定义函数76
5.2.3没有return语句的函数77
5.2.4为你的函数编写文档77
5.2.5巩固练习78
5.3挑战:温度转换78
5.4绕圈跑79
5.4.1while循环79
5.4.2for循环81
5.4.3嵌套循环84
5.4.4巩固练习85
5.5挑战:跟踪投资情况85
5.6理解Python的作用域86
5.6.1什么是作用域86
5.6.2作用域解析87
5.6.3LEGB原则88
5.6.4打破规则88
5.7总结和更多学习资源89
第6章寻找并修复代码中的bug91
6.1使用调试控制窗口91
6.1.1调试窗口:概览92
6.1.2Step按钮93
6.1.3断点和Go按钮94
6.1.4Over和Out96
6.2消除bug96
6.2.1第(1)步:猜测问题出在哪里97
6.2.2第(2)步:设置断点并检查代码98
6.2.3第(3)步:确定错误并尝试修复99
6.2.4第(4)步:重复第(1)步至第(3)步直到没有bug100
6.2.5寻找bug的其他方法100
6.3总结和更多学习资源102
第7章条件逻辑与流程控制103
7.1值的比较103
7.2来点儿逻辑106
7.2.1and关键字106
7.2.2or关键字107
7.2.3not关键字109
7.2.4构造更为复杂的表达式110
7.2.5巩固练习111
7.3控制程序的流向112
7.3.1if语句112
7.3.2else关键字113
7.3.3elif关键字114
7.3.4嵌套if语句116
7.3.5巩固练习119
7.4挑战:求因数119
7.5跳出模式120
7.5.1if语句与for循环120
7.5.2break120
7.5.3continue121
7.5.4forelse循环122
7.5.5巩固练习123
7.6从错误中恢复123
7.6.1异常动物园123
7.6.2try和except关键字125
7.6.3空except分句126
7.6.4巩固练习126
7.7事件模拟和概率计算127
7.7.1random模块127
7.7.2质地均匀的硬币128
7.7.3质地不均匀的硬币129
7.7.4巩固练习130
7.8挑战:模拟抛硬币实验130
7.9挑战:模拟选举131
7.10总结和更多学习资源131
第8章元组、列表、字典133
8.1元组:不可变序列133
8.1.1什么是元组134
8.1.2创建元组的方法134
8.1.3元组和字符串的相似之处136
8.1.4元组打包和解包138
8.1.5使用in检查元组是否包含某个值139
8.1.6从函数返回多个值139
8.1.7巩固练习140
8.2列表:可变序列140
8.2.1创建列表140
8.2.2基本操作142
8.2.3修改列表中的元素143
8.2.4增加和删除元素的列表方法144
8.2.5数字列表147
8.2.6列表推导式148
8.2.7巩固练习149
8.3列表与元组的嵌套、拷贝、排序149
8.3.1列表和元组的嵌套149
8.3.2拷贝列表150
8.3.3列表排序152
8.3.4巩固练习153
8.4挑战:列表的列表153
8.5挑战:打油诗154
8.6在字典中保存关系155
8.6.1什么是字典155
8.6.2创建字典156
8.6.3访问字典的值157
8.6.4添加和删除字典的值158
8.6.5检查字典中是否存在某个键159
8.6.6迭代字典159
8.6.7字典的键和不可变性160
8.6.8嵌套字典161
8.6.9巩固练习162
8.7挑战:首府环游162
8.8选择合适的数据结构163
8.9挑战:猫猫戴帽帽164
8.10总结和更多学习资源164
第9章面向对象编程166
9.1定义类166
9.1.1类和实例167
9.1.2如何定义类167
9.2实例化对象169
9.2.1类和实例属性170
9.2.2实例方法171
9.2.3巩固练习173
9.3从其他类继承173
9.3.1狗狗公园的例子174
9.3.2父类和子类175
9.3.3扩展父类的功能176
9.3.4巩固练习178
9.4挑战:建模农场179
9.5总结和更多学习资源179
第10章模块和包181
10.1使用模块181
10.1.1创建模块182
10.1.2在模块中导入另一个模块182
10.1.3import语句的变体184
10.1.4为什么要用命名空间186
10.1.5巩固练习188
10.2使用包188
10.2.1创建包188
10.2.2导入包中的模块189
10.2.3从子包中导入模块192
10.2.4巩固练习193
10.3总结和更多学习资源194
第11章文件输入与输出195
11.1文件和文件系统195
11.1.1文件的结构195
11.1.2文件系统196
11.2在Python中处理文件路径198
11.2.1创建Path对象198
11.2.2绝对路径和相对路径200
11.2.3访问文件路径分量201
11.2.4检查文件路径是否存在203
11.2.5巩固练习203
11.3常见文件系统操作204
11.3.1常见目录和文件204
11.3.2遍历文件夹内容207
11.3.3查找目录中的文件208
11.3.4使用**通配符递归匹配211
11.3.5移动、删除文件和文件夹212
11.3.6巩固练习214
11.4挑战:将所有图片文件移动到
一个新目录中215
11.5读写文件215
11.5.1什么是文件215
11.5.2理解文本文件216
11.5.3Python文件对象217
11.5.4从文件中读取数据221
11.5.5向文件写入数据222
11.5.6巩固练习225
11.6读写CSV数据225
11.6.1csv模块226
11.6.2巩固练习231
11.7挑战:创建高分榜232
11.8总结和更多学习资源233
第12章使用pip安装包234
12.1使用pip安装第三方包234
12.1.1将pip更新至最新版本237
12.1.2列出所有已安装的包238
12.1.3安装包238
12.1.4展示包的详情240
12.1.5卸载包241
12.2第三方包的陷阱242
12.3总结和更多学习资源243
第13章创建、修改PDF文件244
13.1从PDF文件中提取文本244
13.1.1打开PDF文件245
13.1.2提取页面中的文本247
13.1.3汇总248
13.1.4巩固练习249
13.2提取PDF中的页面249
13.2.1使用PdfFileWriter类249
13.2.2从PDF中提取单个页面251
13.2.3从PDF中提取多个页面252
13.2.4巩固练习254
13.3挑战:PdfFileSplitter类254
13.4拼接、合并PDF255
13.4.1使用PdfFileMerger类255
13.4.2使用.append()拼接PDF255
13.4.3使用.merge()合并PDF257
13.4.4巩固练习259
13.5旋转、裁剪PDF页面259
13.5.1旋转页面259
13.5.2裁剪页面263
13.5.3巩固练习266
13.6加密、解密PDF266
13.6.1加密PDF267
13.6.2解密PDF268
13.6.3巩固练习269
13.7挑战:整理PDF269
13.8从头创建PDF文件269
13.8.1安装reportlab270
13.8.2使用Canvas类270
13.8.3设置页面尺寸271
13.8.4设置字体属性272
13.9总结和更多学习资源274
第14章操作数据库276
14.1SQLite简介276
14.1.1SQLite基础277
14.1.2使用with管理数据库连接278
14.1.3操作数据库表279
14.1.4执行多条SQL语句281
14.1.5使用参数化语句避免安全问题282
14.1.6获得数据283
14.1.7巩固练习284
14.2操作其他SQL数据库的库285
14.3总结和更多学习资源285
第15章和Web交互287
15.1抓取并解析网站中的文本287
15.1.1你的第一个网络抓取器288
15.1.2使用字符串方法提取HTML中的文本289
15.1.3正则表达式入门290
15.1.4使用正则表达式提取HTML中的文本293
15.1.5巩固练习294
15.2使用HTML解析器抓取网站294
15.2.1安装BeautifulSoup294
15.2.2创建BeautifulSoup对象295
15.2.3使用BeautifulSoup对象295
15.2.4巩固练习297
15.3和HTML表单交互298
15.3.1安装MechanicalSoup298
15.3.2创建Browser对象298
15.3.3使用MechanicalSoup提交表单299
15.3.4巩固练习302
15.4和网站进行实时交互302
15.5总结和更多学习资源304
第16章科学计算与绘图306
16.1使用NumPy操作矩阵306
16.1.1安装NumPy307
16.1.2创建NumPyarray308
16.1.3数组运算309
16.1.4堆叠、重构数组311
16.1.5巩固练习313
16.2使用Matplotlib绘制图像313
16.2.1安装Matplotlib314
16.2.2使用pyplot进行基本的图像绘制314
16.2.3在同一窗口中绘制多幅图像317
16.2.4为NumPy数组绘图319
16.2.5完善图像的格式321
16.2.6其他类型的图像325
16.2.7将图像保存为图片328
16.2.8与图像交互329
16.2.9巩固练习329
16.3总结和更多学习资源329
第17章图形用户界面331
17.1使用EasyGUI添加GUI元素331
17.1.1安装EasyGUI331
17.1.2你的第一个EasyGUI应用程序332
17.1.3EasyGUI的GUI元素库334
17.1.4优雅地退出程序338
17.1.5巩固练习339
17.2应用示例:PDF页面旋转程序340
17.2.1设计应用程序340
17.2.2实现设计341
17.2.3巩固练习344
17.3挑战:PDF页面提取应用程序345
17.4Tkinter简介346
17.4.1你的第一个Tkinter应用程序346
17.4.2巩固练习348
17.5使用小组件348
17.5.1Label小组件349
17.5.2Button小组件351
17.5.3Entry小组件352
17.5.4Text小组件355
17.5.5将小组件分配给frame361
17.5.6使用relief调整frame的外观364
17.5.7小组件命名惯例365
17.5.8巩固练习366
17.6使用布局管理器控制布局366
17.6.1.pack()布局管理器367
17.6.2.place()布局管理器370
17.6.3.grid()布局管理器371
17.6.4巩固练习379
17.7让应用程序可交互379
17.7.1事件和事件处理器380
17.7.2.bind()方法382
17.7.3command属性383
17.7.4巩固练习385
17.8应用示例:温度转换器386
17.9应用示例:文本编辑器389
17.10挑战:诗人回归396
17.11总结和更多学习资源397
第18章写在最后399
18.1Python开发者的免费周报399
18.2推荐图书:《深入理解Python特性》400
18.3RealPython视频课程库400
18.4致谢401