内容简介
本书是针对所有层次的Python读者而作的Python入门书。全书分为两部分:第一部分介绍使用Python编程所必须了解的基本概念,包括强大的Python库和工具,以及列表、字典、if语句、类、文件和异常、测试代码等内容;第二部分将理论付诸实践,讲解如何开发三个项目,包括简单的2D游戏、利用数据生成交互式的信息图以及创建和定制简单的Web应用程序,并帮助读者解决常见编程问题和困惑。第3版进行了全面修订:使用了文本编辑器VSCode,新增了介绍removeprefix()方法和removesuffix()方法的内容,并且在项目中利用了Matplotlib和Plotly的最新特性,等等。
本书适合对Python感兴趣的所有读者阅读。
作者简介
埃里克·马瑟斯(EricMatthes)
缔造技术图书销售奇迹的作家,作品影响了全球数百万读者。
致力于推动Python编程在全球的普及。执教计算机科学和数学25年,教学风格轻松有趣,深受学生喜爱。他对编程的热爱和丰厚的教学经验淋漓尽致地体现在了蟒蛇书《Python编程:从入门到实践》中。
蟒蛇书备受读者推崇。无论是熟练掌握其他编程语言的程序员,还是年仅10岁的萌新,都是本书拥趸。该书在全球范围内被翻译为12种语言,累计热销近300万册,其中仅中文版前两版的销量就超过了120万册。
目录
第一部分 基础知识第1章 起步2
1.1 编程环境简介2
1.1.1 Python版本2
1.1.2 运行Python代码片段2
1.1.3 编辑器VSCode简介3
1.2 在各种操作系统中搭建Python编程
环境3
1.2.1在Windows系统中搭建Python编程环境4
1.2.2 在macOS系统中搭建Python编程环境5
1.2.3 在Linux系统中搭建Python
编程环境6
1.3 运行HelloWorld程序7
1.3.1 给VSCode安装Python扩展7
1.3.2 运行程序hello_world.py8
1.4 排除安装问题8
1.5 从终端运行Python程序9
1.5.1 在Windows系统中从终端
运行Python程序9
1.5.2 在Linux和macOS系统中从
终端运行Python程序10
1.6 小结11
第2章 变量和简单的数据类型12
2.1 运行hello_world.py时发生的情况12
2.2 变量12
2.2.1 变量的命名和使用13
2.2.2 如何在使用变量时避免命名
错误14
2.2.3 变量是标签15
2.3 字符串16
2.3.1 使用方法修改字符串的大小写16
2.3.2 在字符串中使用变量17
2.3.3 使用制表符或换行符来添加
空白18
2.3.4 删除空白18
2.3.5 删除前缀20
2.3.6 如何在使用字符串时避免语法错误20
2.4 数22
2.4.1 整数22
2.4.2 浮点数23
2.4.3 整数和浮点数23
2.4.4 数中的下划线24
2.4.5 同时给多个变量赋值24
2.4.6 常量24
2.5 注释25
2.5.1 如何编写注释25
2.5.2 该编写什么样的注释25
2.6 Python之禅26
2.7 小结27
第3章 列表简介28
3.1 列表是什么28
3.1.1 访问列表元素28
3.1.2 索引从0而不是1开始29
3.1.3 使用列表中的各个值30
3.2 修改、添加和删除元素30
3.2.1 修改列表元素31
3.2.2 在列表中添加元素31
3.2.3 从列表中删除元素32
3.3 管理列表37
3.3.1 使用sort()方法对列表进行永久排序37
3.3.2 使用sorted()函数对列表进行临时排序37
3.3.3 反向打印列表38
3.3.4 确定列表的长度39
3.4 使用列表时避免索引错误40
3.5 小结41
第4章 操作列表42
4.1 遍历整个列表42
4.1.1 深入研究循环43
4.1.2 在for循环中执行更多的操作44
4.1.3 在for循环结束后执行一些
操作45
4.2 避免缩进错误45
4.2.1 忘记缩进46
4.2.2 忘记缩进额外的代码行46
4.2.3 不必要的缩进47
4.2.4 循环后不必要的缩进47
4.2.5 遗漏冒号48
4.3 创建数值列表49
4.3.1 使用range()函数49
4.3.2 使用range()创建数值列表50
4.3.3 对数值列表执行简单的统计
计算51
4.3.4 列表推导式52
4.4 使用列表的一部分53
4.4.1 切片53
4.4.2 遍历切片54
4.4.3 复制列表55
4.5 元组57
4.5.1 定义元组58
4.5.2 遍历元组中的所有值58
4.5.3 修改元组变量59
4.6 设置代码格式60
4.6.1 格式设置指南60
4.6.2 缩进60
4.6.3 行长61
4.6.4 空行61
4.6.5 其他格式设置指南61
4.7 小结62
第5章 if语句63
5.1 一个简单的示例63
5.2 条件测试64
5.2.1 检查是否相等64
5.2.2 如何在检查是否相等时忽略
大小写64
5.2.3 检查是否不等65
5.2.4 数值比较66
5.2.5 检查多个条件66
5.2.6 检查特定的值是否在列表中67
5.2.7 检查特定的值是否不在列表中68
5.2.8 布尔表达式68
5.3 if语句69
5.3.1 简单的if语句69
5.3.2 if-else语句70
5.3.3 if-elif-else语句71
5.3.4 使用多个elif代码块72
5.3.5 省略else代码块73
5.3.6 测试多个条件73
5.4 使用if语句处理列表76
5.4.1 检查特殊元素76
5.4.2 确定列表非空77
5.4.3 使用多个列表77
5.5 设置if语句的格式79
5.6 小结80
第6章 字典81
6.1 一个简单的字典81
6.2 使用字典82
6.2.1 访问字典中的值82
6.2.2 添加键值对83
6.2.3 从创建一个空字典开始83
6.2.4 修改字典中的值84
6.2.5 删除键值对85
6.2.6 由类似的对象组成的字典86
6.2.7 使用get()来访问值87
6.3 遍历字典88
6.3.1 遍历所有的键值对88
6.3.2 遍历字典中的所有键90
6.3.3 按特定的顺序遍历字典中的
所有键92
6.3.4 遍历字典中的所有值92
6.4 嵌套94
6.4.1 字典列表94
6.4.2 在字典中存储列表97
6.4.3 在字典中存储字典98
6.5 小结100
第7章 用户输入和while循环101
7.1 input()函数的工作原理101
7.1.1 编写清晰的提示102
7.1.2 使用int()来获取数值输入103
7.1.3 求模运算符104
7.2 while循环简介105
7.2.1 使用while循环105
7.2.2 让用户选择何时退出106
7.2.3 使用标志107
7.2.4 使用break退出循环108
7.2.5 在循环中使用continue109
7.2.6 避免无限循环110
7.3 使用while循环处理列表和字典111
7.3.1 在列表之间移动元素111
7.3.2 删除为特定值的所有列表
元素112
7.3.3 使用用户输入填充字典113
7.4 小结114
第8章 函数115
8.1 定义函数115
8.1.1 向函数传递信息116
8.1.2 实参和形参116
8.2 传递实参117
8.2.1 位置实参117
8.2.2 关键字实参119
8.2.3 默认值119
8.2.4 等效的函数调用120
8.2.5 避免实参错误121
8.3 返回值122
8.3.1 返回简单的值122
8.3.2 让实参变成可选的123
8.3.3 返回字典124
8.3.4 结合使用函数和while循环125
8.4 传递列表127
8.4.1 在函数中修改列表128
8.4.2 禁止函数修改列表130
8.5 传递任意数量的实参131
8.5.1 结合使用位置实参和任意数量的实参132
8.5.2 使用任意数量的关键字实参133
8.6 将函数存储在模块中134
8.6.1 导入整个模块134
8.6.2 导入特定的函数135
8.6.3 使用as给函数指定别名136
8.6.4 使用as给模块指定别名136
8.6.5 导入模块中的所有函数137
8.7 函数编写指南137
8.8 小结139
第9章 类140
9.1 创建和使用类140
9.1.1 创建Dog类141
9.1.2 根据类创建实例142
9.2 使用类和实例144
9.2.1 Car类144
9.2.2 给属性指定默认值145
9.2.3 修改属性的值146
9.3 继承149
9.3.1 子类的__init__()方法149
9.3.2 给子类定义属性和方法151
9.3.3 重写父类中的方法152
9.3.4 将实例用作属性152
9.3.5 模拟实物154
9.4 导入类155
9.4.1 导入单个类155
9.4.2 在一个模块中存储多个类157
9.4.3 从一个模块中导入多个类158
9.4.4 导入整个模块158
9.4.5 导入模块中的所有类159
9.4.6 在一个模块中导入另一个
模块159
9.4.7 使用别名160
9.4.8 找到合适的工作流程161
9.5 Python标准库161
9.6 类的编程风格162
9.7 小结163
第10章 文件和异常164
10.1 读取文件164
10.1.1 读取文件的全部内容164
10.1.2 相对文件路径和绝对文件
路径166
10.1.3 访问文件中的各行167
10.1.4 使用文件的内容168
10.1.5 包含100万位的大型文件169
10.1.6 圆周率值中包含你的
生日吗169
10.2 写入文件170
10.2.1 写入一行171
10.2.2 写入多行171
10.3 异常172
10.3.1 处理ZeroDivisionError
异常172
10.3.2 使用try-except代码块173
10.3.3 使用异常避免崩溃173
10.3.4 else代码块174
10.3.5 处理FileNotFoundError
异常175
10.3.6 分析文本177
10.3.7 使用多个文件177
10.3.8 静默失败179
10.3.9 决定报告哪些错误179
10.4 存储数据181
10.4.1 使用json.dumps()和json.loads()181
10.4.2 保存和读取用户生成的
数据182
10.4.3 重构184
10.5 小结186
第11章 测试代码187
11.1 使用pip安装pytest187
11.1.1 更新pip188
11.1.2 安装pytest188
11.2 测试函数189
11.2.1 单元测试和测试用例190
11.2.2 可通过的测试190
11.2.3 运行测试191
11.2.4 未通过的测试191
11.2.5 在测试未通过时怎么办192
11.2.6 添加新测试193
11.3 测试类195
11.3.1 各种断言195
11.3.2 一个要测试的类195
11.3.3 测试AnonymousSurvey类197
11.3.4 使用夹具198
11.4 小结200
第二部分 项 目
项目1 外星人入侵202
第12章 武装飞船203
12.1 规划项目203
12.2 安装Pygame204
12.3 开始游戏项目204
12.3.1 创建Pygame窗口及响应用户输入204
12.3.2 控制帧率206
12.3.3 设置背景色207
12.3.4 创建Settings类207
12.4 添加飞船图像208
12.4.1 创建Ship类209
12.4.2 在屏幕上绘制飞船211
12.5 重构:_check_events()方法和_update_screen()方法212
12.5.1 _check_events()方法212
12.5.2 _update_screen()方法213
12.6 驾驶飞船214
12.6.1 响应按键214
12.6.2 允许持续移动214
12.6.3 左右移动216
12.6.4 调整飞船的速度217
12.6.5 限制飞船的活动范围218
12.6.6 重构_check_events()219
12.6.7 按Q键退出220
12.6.8 在全屏模式下运行游戏220
12.7 简单回顾221
12.7.1 alien_invasion.py221
12.7.2 settings.py221
12.7.3 ship.py221
12.8 射击222
12.8.1 添加子弹设置222
12.8.2 创建Bullet类222
12.8.3 将子弹存储到编组中223
12.8.4 开火224
12.8.5 删除已消失的子弹226
12.8.6 限制子弹数量226
12.8.7 创建_update_bullets()
方法227
12.9 小结228
第13章 外星人229
13.1 项目回顾229
13.2 创建第一个外星人230
13.2.1 创建Alien类230
13.2.2 创建Alien实例231
13.3 创建外星舰队232
13.3.1 创建一行外星人232
13.3.2 重构_create_fleet()234
13.3.3 添加多行外星人235
13.4 让外星舰队移动237
13.4.1 向右移动外星舰队237
13.4.2 创建表示外星舰队移动方向的设置238
13.4.3 检查外星人是否到达了屏幕边缘239
13.4.4 向下移动外星舰队并改变移动方向239
13.5 击落外星人240
13.5.1 检测子弹和外星人的碰撞240
13.5.2 为测试创建大子弹242
13.5.3 生成新的外星舰队242
13.5.4 加快子弹的速度243
13.5.5 重构_update_bullets()243
13.6 结束游戏244
13.6.1 检测外星人和飞船的碰撞244
13.6.2 响应外星人和飞船的碰撞245
13.6.3 有外星人到达屏幕下边缘247
13.6.4 游戏结束248
13.7 确定应运行游戏的哪些部分249
13.8 小结249
第14章 记分250
14.1 添加Play按钮250
14.1.1 创建Button类250
14.1.2 在屏幕上绘制按钮252
14.1.3 开始游戏253
14.1.4 重置游戏254
14.1.5 将Play按钮切换到非活动
状态254
14.1.6 隐藏光标255
14.2 提高难度256
14.2.1 修改速度设置256
14.2.2 重置速度258
14.3 记分258
14.3.1 显示得分259
14.3.2 创建记分牌260
14.3.3 在外星人被击落时更新
得分261
14.3.4 重置得分262
14.3.5 将每个被击落的外星人都
计入得分262
14.3.6 提高分数263
14.3.7 对得分进行舍入264
14.3.8 最高分265
14.3.9 显示等级267
14.3.10 显示余下的飞船数269
14.4 小结272
项目2 数据可视化273
第15章 生成数据274
15.1 安装Matplotlib274
15.2 绘制简单的折线图275
15.2.1 修改标签文字和线条粗细276
15.2.2 校正绘图277
15.2.3 使用内置样式278
15.2.4 使用scatter()绘制散点图
并设置样式279
15.2.5 使用scatter()绘制一系
列点280
15.2.6 自动计算数据281
15.2.7 定制刻度标记282
15.2.8 定制颜色282
15.2.9 使用颜色映射283
15.2.10 自动保存绘图284
15.3 随机游走284
15.3.1 创建RandomWalk类284
15.3.2 选择方向285
15.3.3 绘制随机游走图286
15.3.4 模拟多次随机游走287
15.3.5 设置随机游走图的样式287
15.4 使用Plotly模拟掷骰子292
15.4.1 安装Plotly292
15.4.2 创建Die类292
15.4.3 掷骰子293
15.4.4 分析结果293
15.4.5 绘制直方图294
15.4.6 定制绘图295
15.4.7 同时掷两个骰子296
15.4.8 进一步定制298
15.4.9 同时掷两个面数不同的
骰子298
15.4.10 保存绘图299
15.5 小结300
第16章 下载数据301
16.1 CSV文件格式301
16.1.1 解析CSV文件头302
16.1.2 打印文件头及其位置302
16.1.3 提取并读取数据303
16.1.4 绘制温度图304
16.1.5 datetime模块305
16.1.6 在图中添加日期306
16.1.7 涵盖更长的时间307
16.1.8 再绘制一个数据系列308
16.1.9 给图中区域着色309
16.1.10 错误检查310
16.2 制作全球地震散点图:GeoJSON
格式313
16.2.1 地震数据313
16.2.2 查看GeoJSON数据313
16.2.3 创建地震列表316
16.2.4 提取震级316
16.2.5 提取位置数据317
16.2.6 绘制地震散点图318
16.2.7 指定数据的另一种方式319
16.2.8 定制标记的尺寸320
16.2.9 定制标记的颜色321
16.2.10 其他渐变323
16.2.11 添加悬停文本323
16.3 小结325
第17章 使用API326
17.1 使用API326
17.1.1 Git和GitHub326
17.1.2 使用API调用请求数据327
17.1.3 安装Requests327
17.1.4 处理API响应328
17.1.5 处理响应字典329
17.1.6 概述最受欢迎的仓库331
17.1.7 监控API的速率限制332
17.2 使用Plotly可视化仓库332
17.2.1 设置图形的样式334
17.2.2 添加定制工具提示335
17.2.3 添加可单击的链接336
17.2.4 定制标记颜色337
17.2.5 深入了解Plotly和GitHub
API338
17.3 HackerNewsAPI338
17.4 小结341
项目3 Web应用程序342
第18章 Django入门343
18.1 建立项目343
18.1.1 制定规范343
18.1.2 建立虚拟环境344
18.1.3 激活虚拟环境344
18.1.4 安装Django345
18.1.5 在Django中创建项目345
18.1.6 创建数据库346
18.1.7 查看项目346
18.2 创建应用程序348
18.2.1 定义模型349
18.2.2 激活模型350
18.2.3 Django管理网站351
18.2.4 定义模型Entry353
18.2.5 迁移模型Entry354
18.2.6 向管理网站注册Entry354
18.2.7 Djangoshell355
18.3 创建网页:学习笔记主页357
18.3.1 映射URL357
18.3.2 编写视图359
18.3.3 编写模板360
18.4 创建其他网页361
18.4.1 模板继承361
18.4.2 显示所有主题的页面363
18.4.3 显示特定主题的页面366
18.5 小结369
第19章 用户账户370
19.1 让用户能够输入数据370
19.1.1 添加新主题370
19.1.2 添加新条目374
19.1.3 编辑条目378
19.2 创建用户账户381
19.2.1 应用程序accounts381
19.2.2 将应用程序accounts添加
到settings.py中381
19.2.3 包含应用程序accounts的URL382
19.2.4 登录页面382
19.2.5 注销385
19.2.6 注册页面386
19.3 让用户拥有自己的数据389
19.3.1 使用@login_required限制
访问389
19.3.2 将数据关联到用户391
19.3.3 只允许用户访问自己的
主题393
19.3.4 保护用户的主题394
19.3.5 保护页面edit_entry394
19.3.6 将新主题关联到当前用户395
19.4 小结396
第20章 设置应用程序的样式并部署397
20.1 设置项目“学习笔记”的样式397
20.1.1 应用程序django-bootstrap5397
20.1.2 使用Bootstrap设置项目
“学习笔记”的样式398
20.1.3 修改base.html399
20.1.4 使用jumbotron设置主页的样式404
20.1.5 设置登录页面的样式405
20.1.6 设置页面topics的样式406
20.1.7 设置页面topic中条目的
样式407
20.2 部署“学习笔记”409
20.2.1 注册Platform.sh账户409
20.2.2 安装Platform.shCLI409
20.2.3 安装platformshconfig410
20.2.4 创建文件requirements.txt410
20.2.5 其他部署需求411
20.2.6 添加配置文件411
20.2.7 为部署到Platform.sh而
修改settings.py414
20.2.8 使用Git跟踪项目文件415
20.2.9 在Platform.sh上创建项目417
20.2.10 推送到Platform.sh418
20.2.11 查看线上项目419
20.2.12 改进Platform.sh部署420
20.2.13 创建定制错误页面422
20.2.14 继续开发423
20.2.15 将项目从Platform.sh上
删除424
20.3 小结425
附录A 安装及故障排除426
附录B 文本编辑器和IDE430
附录C 寻求帮助436
附录D 使用Git进行版本控制440
附录E 部署故障排除449
······
最后修改:2023 年 10 月 17 日
© 允许规范转载