
.6小结 11
第2章变量和简单数据类型 12
2.1运行hello_world.py时发生的情况 12
2.2变量 13
2.2.1变量的命名和使用 13
2.2.2使用变量时避免命名错误 14
2.2.3变量是标签 15
2.3字符串 16
2.3.1使用方法修改字符串的大小写 17
2.3.3使用制表符或换行符来添加空白 18
2.3.4删除空白 19
2.3.5使用字符串时避免语法错误 20
2.4数 21
2.4.1整数 22
2.4.2浮点数 22
2.4.3整数和浮点数 23
2.4.4数中的下划线 23
2.4.5同时给多个变量赋值 24
2.4.6常量 24
2.5注释 25
2.5.1如何编写注释 25
2.5.2该编写什么样的注释 25
2.6Python之禅 26
2.7小结 27
第3章列表简介 28
3.1列表是什么 28
3.1.1访问列表元素 29
3.1.2索引从0而不是1开始 29
3.1.3使用列表中的各个值 30
3.2修改、添加和删除元素 31
3.2.1修改列表元素 31
3.2.2在列表中添加元素 31
3.2.3从列表中删除元素 32
3.3组织列表 36
3.3.1使用方法sort()对列表永久排序 37
3.3.2使用函数sorted()对列表临时排序 37
3.3.3倒着打印列表 38
3.3.4确定列表的长度 38
3.4使用列表时避免索引错误 39
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定义元组 57
4.5.2遍历元组中的所有值 58
4.5.3修改元组变量 59
4.6设置代码格式 60
4.6.1格式设置指南 60
4.6.2缩进 60
4.6.3行长 60
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检查特定值是否包含在列表中 68
5.2.8布尔表达式 68
5.3if语句 69
5.3.1简单的if语句 69
5.3.2if-else语句 70
5.3.3if-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()来获取数值输入 102
7.1.3求模运算符 104
7.2while循环简介 105
7.2.1使用while循环 105
7.2.2让用户选择何时退出 105
7.2.3使用标志 107
7.2.4使用break退出循环 108
7.2.5在循环中使用continue 109
7.2.6避免无限循环 109
7.3使用while循环处理列表和字典 111
7.3.1在列表之间移动元素 111
7.3.2删除为特定值的所有列表元素 112
7.3.3使用用户输入来填充字典 112
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使用任意数量的关键字实参 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小结 138
第9章类 140
9.1创建和使用类 140
9.1.1创建Dog类 141
9.1.2根据类创建实例 142
9.2使用类和实例 144
9.2.1Car类 145
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自定义工作流程 160
9.5Python标准库 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使用文件的内容 168
10.1.6包含一百万位的大型文件 170
10.2写入文件 171
10.2.1写入空文件 171
10.2.2写入多行 172
10.2.3附加到文件 173
10.3异常 174
10.3.1处理ZeroDivisionError异常 174
10.3.2使用try-except代码块 174
10.3.3使用异常避免崩溃 175
10.3.4else代码块 176
10.3.5处理FileNotFoundError异常 177
10.3.6分析文本 178
10.3.7使用多个文件 179
10.3.8静默失败 180
10.3.9决定报告哪些错误 181
10.4存储数据 182
10.4.1使用json.dump()和json.load() 182
10.4.2保存和读取用户生成的数据 183
10.4.3重构 185
10.5小结 187
第11章测试代码 188
11.1测试函数 188
11.1.1单元测试和测试用例 189
11.1.2可通过的测试 189
11.1.3未通过的测试 191
11.1.4测试未通过时怎么办 192
11.1.5添加新测试 193
11.2测试类 194
11.2.1各种断言方法 194
11.2.2一个要测试的类 195
11.2.3测试AnonymousSurvey类 197
11.2.4方法setUp() 198
11.3小结 200
第二部分项目
项目1外星人入侵 202
第12章武装飞船 203
12.1规划项目 203
12.2安装Pygame 204
12.3开始游戏项目 204
12.3.1创建Pygame窗口及响应用户输入 204
12.3.2设置背景色 206
12.3.3创建设置类 207
12.4添加飞船图像 208
12.4.1创建Ship类 209
12.4.2在屏幕上绘制飞船 210
12.5重构:方法_check_events()和__update_screen() 211
12.5.1方法_check_events() 211
12.5.2方法_update_screen() 212
12.6驾驶飞船 213
12.6.1响应按键 213
12.6.2允许持续移动 214
12.6.3左右移动 215
12.6.4调整飞船的速度 216
12.6.5限制飞船的活动范围 218
12.6.6重构_check_events() 218
12.6.7按Q键退出 219
12.6.8在全屏模式下运行游戏 219
12.7简单回顾 220
12.7.1alien_invasion.py 220
12.7.2settings.py 220
12.7.3ship.py 220
12.8射击 221
12.8.1添加子弹设置 221
12.8.2创建Bullet类 221
12.8.3将子弹存储到编组中 223
12.8.4开火 223
12.8.5删除消失的子弹 225
12.8.6限制子弹数量 225
12.8.7创建方法_update_bullets() 227
第13章外星人来了 228
13.1项目回顾 228
13.2创建第一个外星人 229
13.2.1创建Alien类 229
13.2.2创建Alien实例 230
13.3创建一群外星人 232
13.3.1确定一行可容纳多少个外星人 232
13.3.2创建一行外星人 232
13.3.3重构_create_fleet() 234
13.3.4添加行 234
13.4让外星人群移动 237
13.4.1向右移动外星人群 237
13.4.2创建表示外星人移动方向的设置 238
13.4.3检查外星人是否撞到了屏幕边缘 238
13.4.4向下移动外星人群并改变移动方向 239
13.5射杀外星人 240
13.5.1检测子弹与外星人的碰撞 241
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确定应运行游戏的哪些部分 248
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安装Matplotlib 274
15.2绘制简单的折线图 275
15.2.1修改标签文字和线条粗细 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使用颜色映射 283
15.2.9自动保存图表 284
15.3随机漫步 284
15.3.1创建RandomWalk类 284
15.3.2选择方向 285
15.3.3绘制随机漫步图 286
15.3.4模拟多次随机漫步 287
15.3.5设置随机漫步图的样式 288
15.4使用Plotly模拟掷骰子 292
15.4.1安装Plotly 292
15.4.2创建Die类 293
15.4.3掷骰子 293
15.4.4分析结果 294
15.4.5绘制直方图 294
15.4.6同时掷两个骰子 296
15.4.7同时掷两个面数不同的骰子 298
15.5小结 300
第16章下载数据 301
16.1CSV文件格式 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.1.11自己动手下载数据 313
16.2制作全球地震散点图:JSON格式 315
16.2.2查看JSON数据 315
16.2.3创建地震列表 317
16.2.4提取震级 317
16.2.5提取位置数据 318
16.2.6绘制震级散点图 319
16.2.7另一种指定图表数据的方式 320
16.2.8定制标记的尺寸 321
16.2.9定制标记的颜色 322
16.2.10其他渐变 323
16.2.11添加鼠标指向时显示的文本 324
16.3小结 325
第17章使用API 326
17.1使用WebAPI 326
17.1.1Git和GitHub 326
17.1.2使用API调用请求数据 327
17.1.3安装Requests 327
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改进Plotly图表 334
17.2.2添加自定义工具提示 336
17.2.3在图表中添加可单击的链接 337
17.2.4深入了解Plotly和GitHubAPI 338
17.3HackerNewsAPI 338
17.4小结 341
项目3Web应用程序 342
第18章从Django入手 343
18.1建立项目 343
18.1.1制定规范 343
18.1.2建立虚拟环境 344
18.1.3激活虚拟环境 344
18.1.4安装Django 345
18.1.5在Django中创建项目 345
18.1.6创建数据库 346
18.1.7查看项目 346
18.2创建应用程序 348
18.2.1定义模型 348
18.2.2激活模型 349
18.2.3Django管理网站 351
18.2.4定义模型Entry 353
18.2.5迁移模型Entry 354
18.2.6向管理网站注册Entry 354
18.2.7Djangoshell 355
18.3创建页面:学习笔记主页 357
18.3.1映射URL 358
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应用程序users 381
19.2.2将users添加到settings.py中 381
19.2.3包含users的URL 382
19.2.4登录页面 382
19.2.5注销 384
19.2.6注册页面 386
19.3让用户拥有自己的数据 388
19.3.1使用@login_required限制访问 388
19.3.2将数据关联到用户 390
19.3.3只允许用户访问自己的主题 393
19.3.4保护用户的主题 393
19.3.5保护页面edit_entry 394
19.3.6将新主题关联到当前用户 396
第20章设置应用程序的样式并部署 397
20.1.1应用程序django-bootstrap4 398
20.1.3修改base.html 399
20.1.4使用jumbotron设置主页的样式 403
20.1.5设置登录页面的样式 404
20.1.6设置显示所有主题的页面的样式 405
20.1.7设置显示单个主题的页面中的条目样式 406
20.2部署“学习笔记” 407
20.2.1建立Heroku账户 408
20.2.2安装HerokuCLI 408
20.2.3安装必要的包 408
20.2.4创建文件requirements.txt 409
20.2.6为部署到Heroku而修改settings.py 410
20.2.7创建启动进程的Procfile 410
20.2.8使用Git跟踪项目文件 410
20.2.9推送到Heroku 412
20.2.10在Heroku上建立数据库 414
20.2.12确保项目的安全 416
20.2.13提交并推送修改 416
20.2.14在Heroku上设置环境变量 417
20.2.15创建自定义错误页面 418
20.2.16继续开发 420
20.2.17设置SECRET_KEY 421
20.2.18将项目从Heroku删除 421
20.3小结 422
附录A安装与故障排除 423
附录B文本编辑器与IDE 428
附录C寻求帮助 432
附录D使用Git进行版本控制 436
后记 445
编程语言与程序设计
Python编程 从入门到实践 第3版(图灵出品)
编程语言与程序设计
Hello算法(图灵出品)
编程语言与程序设计
C++ Primer Plus 第6版 中文版(异步图书出品)
编程语言与程序设计
C++ Primer(中文版 第5版)(博文视点出品)
编程语言与程序设计
高效C/C++调试