书籍内容
主要内容:
● 编写Python命令行程序
● 处理Python数据结构
● 使用和控制随机性
● 为程序和函数编写并运行测试
● 下载每个项目的全套测试集
https://item.jd.com/13613345.html
书籍目录
第1章如何编写和测试Python程序 1
1.1创建你的第一个程序 1
1.2注释行 2
1.3测试程序 2
1.4添加#!(释伴)行 4
1.5可执行的程序 5
1.6理解$PATH 6
1.7添加参数和帮助 7
1.8可选实参 9
1.9运行测试 11
1.10添加main()函数 11
1.11添加get_args()函数 12
1.12测试hello.py 14
1.13用new.py开始新程序 15
1.14使用template.py替代new.py 17
1.15小结 18
第2章瞭望哨:使用字符串 19
2.1启程 20
2.1.1如何使用测试 20
2.1.2用new.py创建程序 21
2.1.3编写、测试、重复 21
2.1.4定义实参 22
2.1.5串连字符串 24
2.1.6变量类型 25
2.1.7获取字符串的正确部分 25
2.1.8在REPL中找到帮助 26
2.1.9字符串方法 27
2.1.10字符串比较 28
2.1.11条件分支 29
2.1.12字符串格式化 30
2.1.13编写程序 31
2.2解决方案 31
2.3讨论 32
2.3.1用get_args()定义实参 32
2.3.2关于main() 32
2.3.3给单词的第一个字符分类 33
2.3.4打印结果 34
2.3.5运行测试集 34
2.4更进一步 34
2.5小结 35
第3章去野餐:使用列表 37
3.1开始编写程序 38
3.2编写picnic.py程序 39
3.3介绍列表 41
3.3.1向列表添加一个元素 41
3.3.2向列表添加多个元素 42
3.3.3对列表进行索引 44
3.3.4对列表进行切片化 44
3.3.5在列表中查找元素 45
3.3.6从列表中删除元素 46
3.3.7对列表进行排序和反转 47
3.3.8变更列表 49
3.3.9连接列表 50
3.4用if/elif/else进行条件分支 50
3.5解决方案 51
3.6讨论 52
3.6.1定义实参 52
3.6.2对条目进行赋值和排序 53
3.6.3对条目进行格式化 53
3.6.4打印条目 54
3.7更进一步 54
3.8小结 54
第4章跳过5:使用字典 57
4.1字典 58
4.1.1创建字典 58
4.1.2访问字典值 60
4.1.3其他字典方法 61
4.2编写jump.py 62
4.3解决方案 64
4.4讨论 64
4.4.1定义参数 65
4.4.2使用dict进行编码 65
4.4.3处理序列中条目的多种方法 65
4.4.4不使用str.replace() 70
4.5更进一步 70
4.6小结 70
第5章吼叫信:使用文件和STDOUT 73
5.1读取文件 74
5.2写入文件 77
5.3编写howler.py 79
5.4解决方案 80
5.5讨论 81
5.5.1定义实参 82
5.5.2从文件或命令行读取输入 82
5.5.3选择输出文件句柄 83
5.5.4打印输出 84
5.5.5低内存版本 84
5.6更进一步 86
5.7小结 86
第6章数单词:读取文件和STDIN,迭代列表,格式化字符串 87
6.1编写wc.py 88
6.1.1定义文件输入 89
6.1.2迭代列表 90
6.1.3你在数什么 90
6.1.4格式化结果 92
6.2解决方案 93
6.3讨论 94
6.3.1定义实参 94
6.3.2使用for循环读入一个文件 94
6.4更进一步 96
6.5小结 96
第7章Gashlycrumb:在字典中查找条目 97
7.1编写 gashlycrumb.py 98
7.2解决方案 101
7.3讨论 102
7.3.1处理实参 102
7.3.2读取输入文件 102
7.3.3使用字典推导式 103
7.3.4lookup字典 104
7.4更进一步 104
7.5小结 105
第8章苹果和香蕉:找到并替换 107
8.1更改字符串 109
8.1.1使用str.replace()方法 109
8.1.2使用str.translate() 110
8.1.3变更字符串的其他方法 110
8.2解决方案 111
8.3讨论 112
8.3.1定义参数 112
8.3.2替换元音的8种方法 113
8.4用测试进行重构 125
8.5更进一步 126
8.6小结 126
第9章拨号诅咒:用单词列表生成随机嘲讽话 127
9.1编写abuse.py 128
9.1.1验证实参 129
9.1.2导入随机模块并生成种子 131
9.1.3定义形容词和名词 131
9.1.4采集随机样本并选择 132
9.1.5对输出进行格式化 133
9.2解决方案 134
9.3讨论 135
9.3.1定义实参 135
9.3.2使用parser.error() 136
9.3.3程序退出值和STDERR 136
9.3.4用random.seed()控制随机性 137
9.3.5用range()进行迭代并使用抛弃变量 137
9.3.6构建嘲讽语句 138
9.4更进一步 139
9.5小结 139
第10章电话:随机变更字符串 141
10.1编写telephone.py 142
10.1.1计算变更的数量 144
10.1.2变更空间 144
10.1.3选择要变更的字符 145
10.1.4变更字符串 147
10.1.5编写程序 148
10.2解决方案 148
10.3讨论 149
10.3.1变更字符串 150
10.3.2使用list代替str 151
10.4更进一步 152
10.5小结 152
第11章瓶装啤酒之歌:
编写和测试函数 153
11.1编写bottles.py 154
11.1.1反向计数 154
11.1.2编写函数 155
11.1.3为verse()编写测试 156
11.1.4使用verse()函数 160
11.2解决方案 160
11.3讨论 162
11.3.1反向计数 162
11.3.2测试驱动开发 162
11.3.3verse()函数 163
11.3.4遍历歌曲小节 164
11.3.51500个其他解决方案 166
11.4更进一步 166
11.5小结 167
第12章赎金条:随机大写文本 169
12.1编写ransom.py 170
12.1.1修改文本 171
12.1.2掷硬币 171
12.1.3创建新字符串 172
12.2解决方案 172
12.3讨论 174
12.3.1遍历序列中的元素 174
12.3.2编写函数来选择字母 175
12.3.3编写list.append()的另一种方法 175
12.3.4使用str代替list 176
12.3.5使用列表解析式 176
12.3.6使用map()函数 176
12.4方法比较 177
12.5更进一步 178
12.6小结 178
第13章圣诞节的十二天:算法设计 179
13.1编写twelve_days.py 180
13.1.1计数 181
13.1.2创建序数值 182
13.1.3制作小节 183
13.1.4使用verse()函数 185
13.1.5打印 186
13.1.6开始编程 186
13.2解决方案 186
13.3讨论 188
13.3.1制作一个小节 188
13.3.2生成小节 191
13.3.3打印小节 192
13.4更进一步 193
13.5小结 193
第14章押韵机:使用正则表达式创建押韵单词 195
14.1编写rhymer.py 197
14.1.1分解单词 198
14.1.2使用正则表达式 198
14.1.3使用捕获组 201
14.1.4真实性 205
14.1.5创建输出 206
14.2解决方案 206
14.3讨论 208
14.3.1取单词词干 208
14.3.2对正则表达式进行格式化和注释 210
14.3.3在程序之外使用 stemmer()函数 211
14.3.4创建押韵字符串 212
14.3.5不带正则表达式的stemmer() 213
14.4更进一步 214
14.5小结 214
第15章肯德基修士:关于正则表达式的更多故事 215
15.1编写friar.py 217
15.1.1使用正则表达式拆解文本 218
15.1.2简写类 218
15.1.3否定简写类 220
15.1.4使用带有已捕获的正则表达式的re.split() 221
15.1.5编写fry()函数 223
15.1.6使用fry()函数 227
15.2解决方案 228
15.3讨论 229
15.3.1手动编写fry()函数 230
15.3.2编写带有正则表达式的fry()函数 231
15.4更进一步 232
15.5小结 232
第16章扰码器:随机重排单词中部 233
16.1编写scrambler.py 234
16.1.1把文本分解成行和单词 235
16.1.2捕获组、非捕获组和可选组 236
16.1.3编译正则表达式 236
16.1.4对一个单词进行扰码 237
16.1.5对所有单词进行扰码 239
16.2解决方案 239
16.3讨论 241
16.3.1处理文本 241
16.3.2对单词进行扰码 243
16.4更进一步 243
16.5小结 244
第17章疯狂填词:使用正则表达式 245
17.1编写mad.py 246
17.1.1使用正则表达式找到尖括号 247
17.1.2停止并打印错误 250
17.1.3获取值 251
17.1.4替换文本 252
17.2解决方案 252
17.3讨论 253
17.3.1用正则表达式进行替换 253
17.3.2不用正则表达式找到占位符 254
17.4更进一步 256
17.5小结 256
第18章希伯来数:使用ASCII值对文本进行数字编码 257
18.1编写gematria.py 258
18.1.1清洁单词 259
18.1.2序数字符值和范围 260
18.1.3求和与归约 262
18.1.4使用functools.reduce 263
18.1.5对单词进行编码 264
18.1.6拆解文本 265
18.2解决方案 265
18.3讨论 266
18.3.1编写word2num() 267
18.3.2排序 268
18.3.3测试 270
18.4更进一步 270
18.5小结 270
第19章每日健身:解析CSV文件,创建文本表输出 271
19.1编写wod.py 272
19.1.1读取带分隔符的文本文件 272
19.1.2手动读取CSV文件 274
19.1.3用csv模块进行解析 277
19.1.4创建读取CSV文件的函数 278
19.1.5选择健身项目 279
19.1.6格式化输出 281
19.1.7处理无效数据 281
19.1.8编程时间 282
19.2解决方案 282
19.3讨论 284
19.3.1读取CSV文件 284
19.3.2潜在的运行错误 285
19.3.3使用pandas.read_csv()解析文件 286
19.3.4对表进行格式化 287
19.4更进一步 289
19.5小结 289
第20章密码强度:生成安全且容易记忆的密码 291
20.1编写password.py 293
20.1.1创建唯一的单词列表 295
20.1.2清洁文本 296
20.1.3使用集合 298
20.1.4对单词进行过滤 298
20.1.5将单词首字母大写 300
20.1.6采样和制作密码 300
20.1.7l33t-ify 300
20.1.8整体运行 301
20.2解决方案 302
20.3讨论 304
20.3.1清洁文本 304
20.3.2ransom()函数 305
20.3.3l33t()函数 305
20.3.4处理文件 306
20.3.5采样和创建密码 307
20.4更进一步 308
20.5小结 308
第21章井字棋:探索状态 309
21.1编写tictactoe.py 310
21.1.1验证用户输入 312
21.1.2更改棋盘 313
21.1.3打印棋盘 313
21.1.4确定赢家 314
21.2解决方案 315
21.2.1验证实参和变更棋盘 317
21.2.2对棋盘进行格式化 320
21.2.3找到赢家 321
21.3更进一步 322
21.4小结 322
第22章井字棋归来:带有类型提示的交互式版本 323
22.1编写itictactoe.py 323
22.1.1元组对话 325
22.1.2具名元组 326
22.1.3添加类型提示 328
22.1.4用Mypy进行类型验证 329
22.1.5更新不可变的结构 330
22.1.6向函数定义添加类型提示 331
22.2解决方案 332
22.2.1使用TypedDict的版本 334
22.2.2思考状态 336
22.3更进一步 336
22.4小结 336
后记 337
附录使用argparse 339