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