序
筆者數年前透過網路資源自學python 程式語言,學習過程中經常忘記語法而無法自在的練習程式,於是將四處學來的語法內容與一些心得整理成投影片供自己快速回顧。投影片在製作時儘量以簡單例子來展示語法,減少過多細節陳述,並試著以python 思維來呈現python 程式,避免夾雜混入其他程式語言的習慣用法。經過幾年的修訂與補充,內容也逐漸完整,遂將這些投影片依學生學習順序改寫成教學投影片,提供學生於課後快速複習。
由於投影片少有冗長的文字陳述,重新閱讀時可很快的回復記憶,抓住重點,學生普遍反應良好。但投影片每一頁的篇幅有限,無法像紙本講義可一次看到數頁內容,前後參考比較。於是利用時間將投影片重新排版成A4 講義型式,並於每章附上大量習題供學生練習。
相較於其他程式語言,python 提供了許多方便的工具與套件。相同的程式問題,以python 程式語言撰寫的程式碼往往比其他程式語言簡潔許多,開發程式極其便利快速。同時與傳統程式語言相比,python 程式語言的學習難度相對容易,非常適合當成初學者的第一個程式語言。這也是python 程式語言為何在眾多程式語言中得以脫穎而出,為許多領域優先選擇的程式語言。
目前全世界各國都已認知到程式設計對本國科技發展的重要性,紛紛在其國民教育中納入基礎程式設計課程,從小扎根培養學童的程式邏輯思維。由筆者的觀察,學習程式的人數雖越來越多,但其中學好的人仍僅有少數。許多人雖花了不少時間學習程式語法,也做過許多程式問題, 但若隨便給個沒有見過的基礎題目,仍然不知從何寫起。究其原因在於許多初學者將學程式當成學習程式語法,而不是學習如何設計程式。前者簡單,翻書或參考網頁即可;後者困難,處處充滿挑戰,隨時需應用邏輯思考。沒有方法的學寫程式,最後多以放棄了結。
本講義除了介紹python 程式語法外,最重要是教你在遇到問題時該如何思考找出方法來解決問題,講義由第三章起都有許多範例以逐步引導利用「數學思維」來完成程式設計。所謂的「數學思維」即是在解題過程中,以間接或直接方式使用數學技巧、概念或知識來解決問題。許多程式問題表面上看不到數學式子,但並不表示用不到數學。數學善於偽裝,總是隱身於問題之中,若要完成程式設計,就得將隱藏在問題中的數學抓出來。初學者遇到程式問題若能隨時利用「數學思維」分析題目,學會如何分解題目,簡化條件來降低問題難度,如此就很容易「突然間」找到解決程式問題的切入點,之後逐步加入條件,即可完成原有的程式問題。學習成效即會大增, 學程式過程也就容易獲得成就感,寫程式就變得是一種另類的享受。
講義的每一章末尾都有許多練習題,這些練習題是本講義的最大特色。許多題目都需要經過一番思考才有辦法動手撰寫,無法即看即寫,目的是希望讀者在學程式過程,學會如何以「數學思維」來解決問題。對毫無頭緒的問題,試著先透過紙筆推導,逐步找出關聯,建構解題步驟,之後才用鍵盤將抽象步驟轉為實體程式碼,如此可避免毫無方向的撰寫程式,胡亂修改測試,以致於幾個小時過後仍是一事無成,時日一久,自然多以「陣亡」收場。但事實上,只要在撰寫程式過程養成紙筆推導習慣,你將發現過去所學的國高中數學對程式設計的重要性。紙筆推導是完成程式設計的一個重要階段,少了紙筆推導,其省下的時間遠不足以補償在程式撰寫階段來來回回修改所浪費的時間。
講義有些文字有數字上標,例如:行道樹46,此數字為講義頁碼,讀者可參閱此頁碼取得更多相關資料。本講義另附有學習網站,網站內有講義全10 章投影片,網址可輸入以下關鍵字搜尋取得:
搜尋:「中央數學python 教學網」
講義中有些範例或習題需使用資料檔,例如:內文若出現(foo@web),則代表foo 檔是資料檔, 這些資料檔都可由學習網站下載取得。
最後期勉程式語言的初學者,即使python 語法如何簡單,學好程式的關鍵仍在練習,任何程式語言都無法以閱讀方式即能熟練,親自敲打程式並且大量演練才是學好程式設計的不二法門。
學好程式設計需要大量操作練習,沒有其他竅門。
本書的編排採用陳弘毅教授為Linux 作業系統所開發的chitex (_TEX),這是一種非常好用的中文LATEX。在撰寫過程中,常常受到陳老師的熱心協助,特此致上感謝之意。
?
國立中央大學數學系
吳維漢
107/12/05