书籍详情
趣味微项目,轻松学Python
作者:[美] 肯·尤内-克拉克(Ken Youens-Clark) 著,杨欣 韩轶男 于妙妙 译
出版社:清华大学出版社
出版时间:2022-11-01
ISBN:9787302617341
定价:¥98.00
购买这本书可以去
内容简介
主要内容● 编写Python命令行程序● 处理Python数据结构● 使用和控制随机性● 为程序和函数编写并运行测试● 下载每个项目的全套测试集
作者简介
Ken Youens-Clark是亚利桑那大学的高级科学程序员。他拥有生物系统工程硕士学位,从事编程工作二十多年。
目录
第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.4 lookup字典 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.3 verse()函数 163
11.3.4 遍历歌曲小节 164
11.3.5 1500个其他解决方案 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.7 l33t-ify 300
20.1.8 整体运行 301
20.2 解决方案 302
20.3 讨论 304
20.3.1 清洁文本 304
20.3.2 ransom()函数 305
20.3.3 l33t()函数 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
猜您喜欢