趣味微項目,輕松學Python Tiny Python Projects

[美] 肯·尤內-克拉克(Ken Youens-Clark) 著 楊欣 韓軼男 於妙妙 譯

  • 趣味微項目,輕松學Python-preview-1
  • 趣味微項目,輕松學Python-preview-2
  • 趣味微項目,輕松學Python-preview-3
趣味微項目,輕松學Python-preview-1

買這商品的人也買了...

商品描述

主要內容 ● 編寫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