Python新手免費學習資源、推薦書籍

分享我過去半年,幾乎從零開始,學習程式語言的心得。



學習動機

近兩年來,網路上有許多推廣程式教學的文章,但是因為沒有特別想透過程式做什麼,所以覺得好像跟我沒什麼關係。直到2015年中,突然發現一個工作上似乎可以用程式解決的問題,能替我省下大量的時間,就這樣開始了。

在剛開始學習的時候,非常挫折,身邊沒有人會寫程式,常常卡關後就僵在那邊不知道怎麼辦,google問題,不是不知道怎麼下關鍵字、就是越查資料,不懂的地方越來越多。直到後來大量透過不同的資源學習,才逐漸慢慢進入狀況,也慢慢能寫出簡單的小工具解決自己的需求。

這篇會整理我使用過的網路資源、書籍,以及一些雖然我沒上過但是常常看到網友分享的熱門網站。如果要說學程式語言最重要的地方,我想就是自己有多想解決某個問題的執著吧,剩下就是把需要的知識,像購物清單一樣,找到他、劃掉、帶走。


教學資源

因為從來沒有寫過程式,建議先透過簡單的方法瞭解程式運作的概念,請到Hour of Code享受美好的時光,透過拉積木的方式,完成指定的挑戰。體驗到程式就是把某個問題,拆解成很多小步驟去完成。


接著我會推薦Jessica McKellar的講座,介紹為什麼要學python、有哪些事情背後是透過python完成,後面是新手入門教學,聲音很清楚。講座有兩個小時,如果聽到某個段落聽不懂也沒關係,也不一定要聽完,至少我們到這邊第一次看到coding大概是怎麼回事,這樣的收穫就夠了。


正式進入python的學習,這邊的常見疑問是:我要學哪個版本,2還是3?

我的建議是,教學資源教哪個版本就先學哪個版本,因為後面的範例code是要照著練習的,跟老師用同一個版本就對了。以我遇到的情況,都是教python 2比較多,原因是很多企業仍然在用2,以及一些套件還沒有支援3。

我會推薦從Learn Python The Hard Way入門,英文看得慢或是不習慣沒關係,已經有網友把它翻成中文,笨辦法學Python。可以有效降低英文看不懂、外加程式看不懂所造成的雙重打擊,讓起步稍微順暢一些。中譯的版本後面幾章跟英文版不同,因為英文是最新版。

Learn Python The Hard Way有提供影片購買,$29.59美金,會coding範例還有講解給讀者聽,如果像我一樣身邊找不到人會寫程式可以問,我會建議購買,因為學習最貴的成本是時間,還有盡量讓挫折感降低保持熱情。像是如何在筆記本寫好程式、透過treminal執行,完全陌生的新手可能會卡在這邊,不知道怎麼cd到檔案所在位置、以及在terminal執行.py檔案等等。跟透過treehouse學習程式語言月費制不同,這個買了沒有限時間觀看,可以依照自己的進度前進,比較沒有時間壓力。

可搭配這些網站查資料:Python 基礎教程-runoob.com程式語言教學誌


在課程進行的過程中,卡關挫折、突然覺得沒有興趣,可以休息幾天再回來、或是先看看後面的內容。好比我剛開始學習,print不知道能幹麻,但到中間學了if、else判斷式,才發現光這樣就可以寫個簡單的文字迷宮冒險遊戲,突然覺得有趣起來。

就像我們買來的每本書不一定都會看完,影集跟漫畫也不會通通追完,哪天突然發現有更適合自己的教材,直接換過去也沒有什麼好奇怪的。畢竟有了個比較基準,我們所選的課程會更適合自己。

有了基本的概念後,可以選擇Udacity上的熱門課程Intro to Computer Science,打造一個搜尋引擎。課程的難度前面簡單,到中間後稍微(?)上升,可以了解搜尋引擎背後大致的概念。


英文苦手沒關係,國內有許多非常棒的教學影片,推薦給各位:

TaichungPy-Learning Python From DataMosky老師教學,總共有四個段落。跟我最上面提的Jessica McKellar的講座類似,有大量的實作教學。在這邊看到很多新東西像是zip,以及實務上的一些用法。第一次看跟不上沒關係,我也跟不上XD。

U.camdemy-Python與數據分析:蔡炎龍老師授課,講解數據分析常用的ipython notebook與pandas應用。ipython notebook的好處是可以分段執行,還有畫圖表類的資料很方便。

大數學堂-網路爬蟲教學:David老師教學,影片大多五分鐘內,聽完老師分析,之後馬上看到執行程式得到結果,比起閱讀教學文章,看影片學更快。


書籍部分我是選擇《Python程式設計入門》,原因有兩個:一是我從2015年中開始學習,而這本書是4月出版,可以確定內容是最新的;二是封面印著「適用於Python 2.x 及 3.x」,兩個版本同時兼顧,有差異處註明,所以我覺得他是當參考書的最佳選擇,購買後請記得到葉難老師的部落格更新內容訂正的部分。

整本看完花了兩個月的下班時間,書籍有疑問的部分也都可以在葉難老師的部落格留言,或是搜尋一下前面有沒有人問過。前面有提過我沒有人問,所以我貢獻了不少在下面(汗)。

另外也推薦歐萊禮的《精通 Python:運用簡單的套件進行現代運算》,去年9月出版,用的版本是python 3。別被書名嚇到,英文書名introducing Python,內容是適合新手的,不用太擔心,附錄提供很廣的探索範圍,可以知道目前在哪些領域有相關應用。

(2016.06更新:歐萊禮那本我也看完了,兩本編排風格不同,建議去書店翻翻。如果你會寫章節後的練習題,葉難那本沒有提供解答,歐萊禮的有。)


其他

除了以上介紹的,也請參考下列請單,選擇自己喜歡的新手教學資源開始:

良葛格-專欄文章:Python Tutorial

Cousera-Programming for Everybody (Getting Started with Python),通過考試的付費證書類似這樣:

Codecademy

拚命玩遊戲就能學寫程式! CodeCombat 還有中文版

政大摩課師-數值分析Numerical Analysis


閱讀更多討論:知乎-編程零基礎應當如何開始學習Python?

透過treehouse學習程式語言 < 部落格文章

Udemy平台與網頁設計課程推薦 < 7/21 新文章,了解網頁結構

認識網路爬蟲(Web Crawler) < 8/31 新文章,Python常見應用

Python爬蟲新手筆記 < 10/01 新文章,講解爬蟲概念


在學習的過程中,從不少部落格裡收穫豐碩,總想著如果告一段落,我也想要寫篇文章回饋給之後查資料的人。這篇文章我整理了四個小時,記錄過去的學習軌跡以及過濾後的相關資源,希望能讓跟我一樣的新手在尋找python資源時多些方向,並透過中文的教學影片,降低自學的不安感。其實配上中文書的學習,不用想得太可怕,先開始就對了 :D

至於為什麼一開始說「幾乎」從零開始呢?因為其實更早之前我有嘗試學習過,但是後來遇到瓶頸,也沒有什麼非要用程式解決不可的問題,就放棄了。幾年後,我突然需要用到這個工具,忘光光沒關係,從頭開始學就好了啊。

如果讀者朋友學了幾天就沒辦法持續下去、或是因為其他原因放棄,那也不用太在意,這只是代表現在對你而言不是最好的時機,必須將精神投入到其他事項上。

將來的某個時間點,有需要了、再重拾教材,心理大概還會閃過這樣的旁白:

「哈囉,我又回來找你了。」


最後,感謝Jessica提供我學習的方向、Jia Wei協助我完成第一支小爬蟲、以及Chih Cheng不厭其煩地熱心解答、還有許多Python Taiwan社群裡的好心網友協助解決問題,不然我應該學到一半就落跑了(´~`)。


如果我過去在臉書所記錄的學習片段,能夠有些激勵、甚至鍵盤體驗新手慢慢成長的過程,可以參考:習得無助感閱讀Python入門書遞迴只應天上有入門書閱畢,到現在,眼前這篇文章的誕生與分享

Pala

朝iOS Developer自學轉職中。紀錄過去兩年下班自學Python網頁設計Google Analytics分享;也推薦從架站、撰文到運營,首年12萬瀏覽的部落格心得;新文章是演算法與iOS動畫入門