## 笨辦法更簡單
在這本書的幫助下,你將通過非常簡單的練習學會一門編程語言。做練習 是每個程序員的必經之路:
> 1. 做每一道習題
> 1. 一字不差地寫出每一個程序
> 1. 讓程序運行起來
就是這樣,剛開始可能會非常難,但你要堅持下去。如果你通讀了這本書,并且每晚花一兩個小時做習題,你可以為自己讀下一本關于Python的編程書籍打下良好的基礎。這本書不會在一夜之間把你變成一個程序員,但是它會幫你掌握學習編程的最基本的方法。
這本書的目的是教會你作為編程新手所需的三種最重要的技能:讀和寫、注重細節、發現不同。
## 讀和寫
如果你連打字都成問題的話,那你學習編程也會成問題。尤其如果你連程序源代碼中的那些奇怪字符都打不出來的話,就根本別提編程了。沒有這種基本技能的話,你將連最基本的軟件工作原理都難以學會。
輸入代碼樣例并讓他們運行起來能幫你記住各種符號的名字并對它們熟悉起來,這個過程也會讓你對編程語言更加熟悉。
## 注重細節
區分好壞程序員的最重要的一個技能就是對于細節的注重程度。事實上這是任何行業區分好壞的標準。你必須關注你工作中任何一個微小的細節,否則你的工作成果將缺乏重要的元素。以編程來講,這樣你得到的結果只能是毛病多多難以使用的軟件。
通過將本書中的例子一字不差地打出來,你將通過實踐訓練自己,讓自己集中精力到你作品的細節上面。
## 發現不同
程序員長年累月的工作會培養出一個重要技能,那就是對于不同點的區分能力。有經驗的程序員拿著兩份僅有細微不同的程序,可以立即指出里邊的不同點來。程序員甚至造出工具來讓這件事更加容易,不過我們不會用到這些工具。你要先用笨辦法訓練自己的大腦,等你具備一些相關能力的時候才可以使用這些工具。
在你做每一個習題的時候,你一定會寫錯東西。這是不可避免的,甚至有經驗的程序員也會偶爾出點錯。你的任務是對比你寫過的東西和正確的答案,并將所有的不同點都改正。這個過程可以訓練你關注自己的錯誤,bugs以及其他的一些問題。
## 不要復制-粘貼
你必須自己手動將每個練習打出來。復制粘貼會讓這些練習變得毫無意義。這些習題的目的是訓練你的雙手和大腦思維,讓你有能力讀代碼、寫代碼、觀察代碼。如果你復制粘貼的話,那你就是在欺騙自己,而且這些練習也將失去效果。
## 使用書中包含的視頻
《笨辦法學Python》一書中包含超過5小時的教學視頻。對于每一個練習都有一個視頻,或者是示范這個練習,或者是給出一些完成練習的提示。使用視頻的最佳方式是首先嘗試不使用它們完成練習,然后通過視頻回顧所學,或者是在你被問題卡住的時候使用視頻。這將慢慢使你通過視頻來學習編程和構建你直接理解代碼的技能。堅持下去,慢慢的你將不需要書中視頻或任何學習編程的視頻。你可以只看你所需要的信息。
## 對于堅持練習的一點建議
在你通過這本書學習編程時,我正在學習彈吉他。我每天至少練習2個小時,至少花一個小時練習音階、和聲、和琶音,剩下的時間用來學習音樂理論和歌曲演奏以及訓練聽力等。有時我一天會花8個小時來練習吉他,因為我覺得這是一件有趣的事情。對我來說,要學好一樣東西,重復的練習是必不可少的。就算這天個人狀態很差,或者說學習的課題實在太難,你也不必介意,只要堅持嘗試,總有一天困難會變得容易,枯燥也會變得有趣了。
在我寫笨辦法學Python和笨辦法學Ruby之間的那段時間,我發現了繪畫這個有意思的事情。我在39歲的時候愛上了視覺藝術,并且花費每天的時間來學習它,就像我學習吉他,音樂和編程一樣。我收集教學材料的用書,按照書上講的做,每天練習繪畫,并且專注于享受學習的過程。我不是一個“藝術家”,但是現在我可以說我會繪畫。我在這本書中教給你我用到學習藝術上的相同方法。如果你把問題分解成小的練習課,并且每天完成他們,你就可以做任何事情了。如果你把精力集中在慢慢改進,享受學習的過程,那么你一定會受益,不管你之前有多么擅長它。
在你通過這本書學習編程的過程中要記住一點,就是“萬事開頭難”,對于有價值的事情尤其如此。也許你是一個害怕失敗的人,一碰到困難就想放棄。也許你是一個缺乏自律的人,一碰到“無聊”的事情就不想上手。也許因為有人夸你“有天分”而讓你自視甚高,不愿意做這些看上去很笨拙的事情,怕有負你”神童”的稱號。也許你太過激進,把自己跟有20多年經驗的編程老手相比,讓自己失去了信心。
不管是什么原因,你一定要堅持下去。如果你碰到做不出來的加分習題,或者碰到一節看不懂的習題,你可以暫時跳過去,過一陣子回來再看。只要堅持下去,你總會弄懂的。一開始你可能什么都看不懂。這會讓你感覺很不舒服,就像學習人類的自然語言一樣。你會發現很難記住一些單詞和特殊符號的用法,而且會經常感到很迷茫,直到有一天,忽然一下子你會覺得豁然開朗,以前不明白的東西忽然就明白了。如果你堅持練習下去,堅持探索他們,你最終會學會這些東西的。也許你不會成為一個編程大師,但你至少會明白程序是怎么工作的。
如果你放棄的話,你會失去達到這個程度的機會。你會在第一次碰到不明白的東西時(幾乎是所有的東西)放棄。如果你堅持嘗試,堅持寫習題,堅持嘗試弄懂習題堅持閱讀習題的話,你最終一定會明白里邊的內容的。如果你通讀了這本書,卻還是不知道編程是怎么回事。那也沒關系,至少你嘗試過了。你可以說你已經盡過力但成效不佳,但至少你嘗試過了。這也是一件值得你驕傲的事情。
## 給“小聰明”們的警告
有的學過編程的人讀到這本書,可能會有一種被侮辱的感覺。其實本書中沒有任何要居高臨下地貶低任何人的意思。只不過是我比我面向的讀者群知道的更多而已。如果你覺得自己比我聰明,然后覺得我在居高臨下,那我也沒辦法,因為你根本就不屬于我的目的讀者群。
如果你覺得這本書里到處都在侮辱你的智商,那我對你有三個建議:
> 1. 別讀這本書了。我不是寫給你的,我是寫給需要學習的人的。
> 1. 放下架子好好學。如果你認為你什么都知道,那你就很難從比你強的人身上學到什么了。
> 1. 學 Lisp 去。我聽說什么都知道的人可喜愛 Lisp 了。
對于其他在這里學習的人,你們讀的時候就想著我在微笑就可以了,雖然我的眼睛里還帶著惡作劇的閃光。
- 序言
- 前言
- 簡介
- 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)
- 下一步