現在還不能說你是一個程序員。這本書的目的相當于給你一個“編程棕帶”。你已經了解了足夠的編程基礎,并且有能力閱讀別的編程書籍了。讀完這本書,你應該已經掌握了一些學習的方法,并且具備了該有的學習態度,這樣你在閱讀其他 Python 書籍時也許會更順利,而且能學到更多東西。
我建議你看看這些項目,并嘗試用他們創建一些什么:
> - [`Learn Ruby The Hard Way`](http://learnrubythehardway.org/) 你學習更多的編程語言,你將學習到更多關于編程的知識,所以試著學習Ruby。
> - [`The Django Tutorial`](https://docs.djangoproject.com/en/1.4/intro/tutorial01/) 嘗試使用 [`Django Web Framework`](https://www.djangoproject.com/) 創建一個web應用。
> - [`SciPy`](http://www.scipy.org/)[`Dexy](http://dexy.it/)`:如果你在科學,數學,工程領域,如果你想寫出很棒的論文,使用SciPy 的代碼
> - [`PyGame`](http://www.pygame.org/news.html) 看你能不能制作出一個帶音效和圖像的游戲
> - [`Pandas`](http://pandas.pydata.org/) 用來做數據分析和處理
> - [`Natural Language Tool Kit`](http://nltk.org/) 用來分析書面文本和寫作比如垃圾郵件過濾器和聊天機器人。
> - [`Requests`](http://docs.python-requests.org/en/latest/index.html) 了解HTTP客戶端和WEB
> - [`SimpleCV`](http://simplecv.org/) 讓你的計算機看到現實世界中的東西
> - [`ScraPy`](http://scrapy.org/) 網絡爬蟲
> - [`Panda3D`](https://www.panda3d.org/) 用來制作3D圖畫及游戲
> - [`Kivy`](http://kivy.org/) 用來制作桌面和移動平臺的用戶界面。
> - [`SciKit-Learn`](http://scikit-learn.org/stable/) 用來制作機器學習的應用
> - [`Ren'Py`](http://renpy.org/) 用來做互動小說類的游戲,有點像在本書中你做過的游戲,但是這個是有圖像的
> - [`Learn C The Hard Way`](http://c.learncodethehardway.org/) 在你熟悉python語言之后,嘗試用本書中的算法學習C語言,慢慢學 C 是不同的但很值得去學習的語言
選擇一個上面的源代碼,通讀他們的所有說明手冊和文檔。當你閱讀它的文檔和代碼的時候,輸入所有的代碼,并讓代碼運行起來。我就是這么做的。也是所有程序員的做法。閱讀文檔并不足夠能使你學會它,你必須親手實踐。讀完他們的說明手冊和文檔之后,嘗試做一些小東西,任何東西都可以,即便是別人已經寫過的。
Just understand anything you write will probably suck. That's alright though I suck at every programming language I first start using.?? Nobody writes pure perfect gold when they're a beginner, and anyone who tells you they did is a huge liar.只要你明白你寫的任何東西都將是吸引人的。每當我第一次開始使用一種語言編程的時候。。?沒有人能在作為一個初學者的時候寫出完美的代碼,如果有人這么告訴你,那他一定是個大騙子。
### 如何學習其他編程語言
我將要教會你如何學習其他編程語言。本書的組織是基于我和很多其他程序員如何學習新的語言。我一般遵從一下流程:
> 1. 找一本關于這門語言的書或者其他說明資料
> 1. 通讀這本書,練習輸入這本書所有的代碼,并保證他們能正常運行
> 1. 練習代碼的同時仔細閱讀這本書,并做筆記
> 1. 用這門語言實現一些小程序
> 1. 閱讀別人用這門語言寫代碼,并嘗試復制他們東西
本書中,我強迫你用很慢的速度一小部分一小部分的完成這個流程。其他的書中不一定是相同的方法,這意味著你要自己推斷出我是如何讓你進行這些步驟的去完成他們書中內容的。最好的辦法是快速的閱讀這本書,列出書中所有重要的代碼段。把這個列表按章整理成一系列練習題,然后按順序每次完成一個。
上面的流程同樣適用于一些沒有提供說明書給你的新技術。對于沒有說明書的技術,你可以從網上搜索相關文檔或源代碼,并進行以上流程。
每學一門新語言,都會讓你離更好的程序員更進一步,你學的越多,他們對你來說就越簡單。通過你的第三或第四語言,你應該能夠在一個星期內學會相似的語言,陌生的語言花費的時間要長一些。現在你已經學會了python,那么你就能通過比較快速的學會Ruby和js。這是因為許多語言有著相似的概念,一旦你學會一種,它們在其他語言里也是一樣的。
你要記住的關于學習新語言的最后一件事情是:不要做一個愚蠢的觀光者。愚蠢的人旅游到另一個國家,然后抱怨食物不像家里的食物。“在這個愚蠢的國家,為什么我不能獲得一個更好的漢堡!”。當你學習一門新語言的時候,要堅信它不是無聊的,它只是跟之前的不同而已,擁抱它,你才能學得更好。
在你學習一種語言之后,不要成為一個以語言的方式做事情的奴隸。有時候,人們竟然使用語言做一些白癡的事情,僅僅是因為“我們一直是這么做的”。如果你喜歡你的風格并且你知道其他人都這樣做,如果可以優化一些事情,那么打破這個規則。
我真的很享受學習新的編程語言。我認為自己是一個“程序員的人類學家”,并且認為使用這些語言的程序員只洞察到這門語言很小的一部分。我正在學習一門大家都用來在電腦上互相交流的語言,我發現它非常迷人。再說一次,我是一個奇怪的人,學習編程語言只是因為我想學。
享受它們!真的很有趣!
- 序言
- 前言
- 簡介
- 0:安裝和準備
- 1:第一個程序
- 2:注釋和“#”井號
- 3:數字和數學計算
- 4:變量和命名
- 5:更多的變量和打印
- 6:字符串和文本
- 7:更多的打印(輸出)
- 8:打印, 打印
- 9:打印, 打印, 打印
- 10:那是什么?
- 11:提問
- 12:提示別人
- 13:參數, 解包, 變量
- 14:提示和傳遞
- 15:讀文件
- 16:讀寫文件
- 17:更多文件操作
- 18:命名, 變量, 代碼, 函數
- 19:函數和變量
- 20:函數和文件
- 21:函數的返回值
- 22:到目前為止你學到了什么?
- 23:閱讀代碼
- 24:更多的練習
- 25:更多更多的練習
- 26:恭喜你,可以進行一次考試了
- 27:記住邏輯
- 28:布爾表達式
- 29:IF 語句
- 30:Else 和 If
- 31:做出決定
- 32:循環和列表
- 33:while循環
- 34:訪問列表元素
- 35:分支和函數
- 36:設計和調試
- 37:復習符號
- 38:列表操作
- 39:字典,可愛的字典
- 40:模塊, 類和對象
- 41:學會說面向對象
- 42:對象、類、以及從屬關系
- 43:基本的面向對象的分析和設計
- 44:繼承Vs.包含
- 45:你來制作一個游戲
- 46:項目骨架
- 47:自動化測試
- 48:更復雜的用戶輸入
- 49:寫代碼語句
- 50:你的第一個網站
- 51:從瀏覽器獲取輸入
- 52:開始你的web游戲
- 來自老程序員的建議
- 下一步
- 附錄A:命令行教程
- 簡介
- 安裝和準備
- 路徑, 文件夾, 名錄 (pwd)
- 如果你迷路了
- 創建一個路徑 (mkdir)
- 改變當前路徑 (cd)
- 列出當前路徑 (ls)
- 刪除路徑 (rmdir)
- 目錄切換(pushd, popd)
- 生成一個空文件(Touch, New-Item)
- 復制文件 (cp)
- 移動文件 (mv)
- 查看文件 (less, MORE)
- 輸出文件 (cat)
- 刪除文件 (rm)
- 退出命令行 (exit)
- 下一步