# 第四部分:進階項目
> 原文:[Part IV: Intermediate Projects](https://learncodethehardway.org/more-python-book/part3.html)
> 譯者:[飛龍](https://github.com/wizardforcel)
> 協議:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
> 自豪地采用[谷歌翻譯](https://translate.google.cn/)
在第三部分中,你學習了數據結構和算法的基礎知識,但更重要的是,你學習了審計和測試代碼。你并沒有審計和測試你自己的代碼。你剛剛通過我教給你的方式,審計了我的缺陷。第四部分的目標是通過一系列挑戰模式的項目,審計你自己的代碼。在接下來的五個項目中你的任務如下:
+ 進行45分鐘的 Hack 會話,創建項目并開始。
+ 使用你在第三部分中學到的第一個 Hack,審計你的實現中潛在的缺陷和問題。
+ 然后在另一個 45 分鐘內開始清理,并把你的黑魔法開發成正式的東西。
+ 在 45 分鐘的會話內審計并優化它。
這 45 分鐘的會話與你的第一批項目之間的唯一區別是,你不需要嚴格限制時間。45 分鐘只是一個指導,來確保你不要太久才審計你的代碼。審計停留在好的實現或者想法中間的代碼是沒有意義的。顯然,這些半成品代碼不值得很好地審計。關鍵是要工作大約 45 分鐘,當你暫停了一段時間,然后查看你做了什么。
在本節中,你將參考第三部分的清單,并嚴格遵守它。在進行審計之前,請先休息 10~15 分鐘,來喚醒頭腦并切換到批判的思維模式,這是很好的。
當你處理這些項目時,我將提出一些算法,當它們適合時,你可以在應用程序中使用。你不必使用你實現的算法,但你應該嘗試,只是為了看看它們的工作原理。很可能他們不比 Python 現有的數據結構(`list`和`dict`)更好,因為 Python 的數據結構已經有了很多調整,來變得盡可能快。嘗試使用算法,以便你了解何時使用它們以及如何檢查它們,這仍然是一個很好的練習。
## 記錄你的缺陷
最后,我要求你跟蹤你的缺陷率。就像在第二部分中,跟蹤你完成的功能那樣。你將跟蹤你在審計中找到了多少缺陷,以及它們有什么樣的缺陷。通過創建一個表格,頂部是缺陷類型,左側是日期時間,在你的日志中記錄你發現的東西。如果你想要使用電子表格,你也可以直接繪制結果。跟蹤發現這些缺陷的目標是,開始了解你在編程會話期間經常犯的錯誤,以便你可以嘗試阻止他們或在審計中簡單留意它們。
- 笨辦法學 Python · 續 中文版
- 引言
- 第一部分:預備知識
- 練習 0:起步
- 練習 1:流程
- 練習 2:創造力
- 練習 3:質量
- 第二部分:簡單的黑魔法
- 練習 4:處理命令行參數
- 練習 5:cat
- 練習 6:find
- 練習 7:grep
- 練習 8:cut
- 練習 9:sed
- 練習 10:sort
- 練習 11:uniq
- 練習 12:復習
- 第三部分:數據結構
- 練習 13:單鏈表
- 練習 14:雙鏈表
- 練習 15:棧和隊列
- 練習 16:冒泡、快速和歸并排序
- 練習 17:字典
- 練習 18:性能測量
- 練習 19:改善性能
- 練習 20:二叉搜索樹
- 練習 21:二分搜索
- 練習 22:后綴數組
- 練習 23:三叉搜索樹
- 練習 24:URL 快速路由
- 第四部分:進階項目
- 練習 25:xargs
- 練習 26:hexdump
- 練習 27:tr
- 練習 28:sh
- 練習 29:diff和patch
- 第五部分:文本解析
- 練習 30:有限狀態機
- 練習 31:正則表達式
- 練習 32:掃描器
- 練習 33:解析器
- 練習 34:分析器
- 練習 35:解釋器
- 練習 36:簡單的計算器
- 練習 37:小型 BASIC
- 第六部分:SQL 和對象關系映射
- 練習 38:SQL 簡介
- 練習 39:SQL 創建
- 練習 40:SQL 讀取
- 練習 41:SQL 更新
- 練習 42:SQL 刪除
- 練習 43:SQL 管理
- 練習 44:使用 Python 的數據庫 API
- 練習 45:創建 ORM
- 第七部分:大作業
- 練習 46:blog
- 練習 47:bc
- 練習 48:ed
- 練習 49:sed
- 練習 50:vi
- 練習 51:lessweb
- 練習 52:moreweb