《趣味微項目,輕鬆學Python》是2022年清華大學出版社出版的圖書,作者是[美]肯·尤內-克拉克(Ken Youens-Clark),譯者是楊欣、韓軼男和於妙妙。
基本介紹
- 中文名:趣味微項目,輕鬆學Python
- 作者:[美] 肯·尤內-克拉克(Ken Youens-Clark)
- 譯者:楊欣、韓軼男、於妙妙
- 出版時間:2022年11月
- 出版社:清華大學出版社
- ISBN:9787302617341
- 開本:16 開
- 裝幀:平裝
內容簡介,圖書目錄,作者簡介,
內容簡介
誰說學習編程一定很枯燥?本書用21個謎題和遊戲的方式講解Python的基礎知識,使讀者做每個練習時一邊獲得娛樂,一邊學會文本處理、基本算法,以及列表和字典的用法。本書是Python菜鳥獲得自信和經驗的理想教科書。
項目雖小,收穫卻大。本書每章幫助讀者完成一個新的Python程式挑戰,包括密碼生成器、押韻器、擾碼器等。完成這些有趣的練習後,讀者將從一個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
作者簡介
Ken Youens-Clark是亞利桑那大學的高級科學程式設計師。他擁有生物系統工程碩士學位,從事編程工作二十多年。