趣味微项目,轻松学Python

趣味微项目,轻松学Python"

作者:[美]肯·尤内-克拉克(KenYouens-Clark)著杨欣韩轶男于妙妙译
ISBN:9787302617341
定价:¥98
字数:千字
页数:
出版时间:2022.11.01
开本:
版次:1-1
装帧:
出版社:清华大学出版社
简介

主要内容

● 编写Python命令行程序

● 处理Python数据结构

● 使用和控制随机性

● 为程序和函数编写并运行测试

● 下载每个项目的全套测试集

前言

前    言

为什么使用Python

Python是一种优秀的通用编程语言,可以通过Python编写程序来给朋友发送秘密消息或者下国际象棋。Python模块可以帮助你处理复杂的科学数据,探索机器学习算法,以及生成可供发表的图形。许多大学的计算机科学课程已经将入门语言从C和Java等语言转向Python语言,因为Python是一种相对易学的语言。可以使用Python学习计算机科学中既基础又强大的概念。在介绍正则表达式和高阶函数这一类的概念时,鼓励你进一步深入学习它们。

我为什么撰写本书

多年来,我经常帮助人们学习编程,我一直觉得这件事很有意义。《趣味微项目,轻松学Python》的结构源于我在课堂上的经验,我认为正式的规范和测试有助于学习如何把一个程序分解成多个待解决的小问题,从而构建整个程序。

当我学习一门新语言时,我发现,最大的入门障碍是,一门语言中的很多小概念通常没有被置于任何实际的语境之内。大多数编程语言教程都会以输出“Hello, World!”开头(《趣味微项目,轻松学Python》也不例外),当然这很简单,但是随后,我通常要努力编写一个完整的程序,它将通过实际参数做一些实际的事情。《趣味微项目,轻松学Python》将演示许多做实际事情的程序范例,希望你可以修改这些程序,创建更多供自己使用的程序。

最重要的是,我认为需要做练习。就像那个老笑话:“通往卡内基音乐厅的路在哪里?答案是:练习,练习,再练习。”这些编码的挑战性不是很强,你很可能在几小时或几天内就可以完成一个任务。《趣味微项目,轻松学Python》的内容比我在一个学期的大学课堂上讲的内容要充实,所以我想整本书会花你几个月的时间。我希望你能解决这些问题,接着思考这些问题,然后再回来看看是否能以不同的方式解决它们,比如使用更高级的技巧,或者让程序运行得更快。

目录

目    录

第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

 

作者简介

编辑推荐

谁说学习编程一定很枯燥?本书用21个谜题和游戏的方式讲解Python的基础知识,使读者做每个练习时一边获得娱乐,一边学会文本处理、基本算法,以及列表和字典的用法。本书是Python菜鸟获得自信和经验的理想教科书。

项目虽小,收获却大。本书每章帮助读者完成一个新的Python程序挑战,包括密码生成器、押韵器、扰码器等。完成这些有趣的练习后,读者将从一个Python初学者成长为一个自信的程序员,并在此过程中度过一段美好的时光。

作者寄语

Ken Youens-Clark是亚利桑那大学的高级科学程序员。他拥有生物系统工程硕士学位,从事编程工作二十多年。

电子资料

www.luweidong.cn

下一个