今天我要介紹自己這個初學者學習 Python,從一竅不通到目前能夠勉強撰寫程式碼的這個歷程。我學習 Python 的動機來自於三個關鍵因素,因自身對於未來趨勢的看好以及考量本科科系未來的出路,以及最重要的,它很簡單(學校資訊老師說的),且我在觀察現今趨勢時後得出結論,近年來程式設計成為許多行業的核心技能,加上 AI 的快速進步,許多企業對於程式開發與數據分析的需求不斷提升,尤其是金融相關領域。
後來查閱資料更加深入了解,Python 相對於其他程式語言的應用相當廣泛,無論是數據處理、財務建模、風險評估還是自動化交易等等,Python 都有對應的解決方案(套件)。因此,掌握 Python ,就能掌握未來。那在決定開始學習之後,我首先利用網路搜尋相關資訊,並開始嘗試使用 ChatGPT 來幫助解答關於學習 Python 的問題。
我透過 ChatGPT 來詢問 Python 的學習順序,獲取推薦的學習資源,也請它協助解決一些基礎問題。但是我發現,光靠 AI 解答並不足以讓我真正掌握這門語言,因為我連程式基礎都不懂所以透過詢問 gpt 後得到的答案也看得一知半解,於是我開始進一步尋找系統性的學習方式,最後因緣際會之下加入了一間程式設計的補習班。補習班的老師提到說,對於完全沒有程式基礎的新手而言,Python 是最推薦的入門選擇,因為它的語法相對簡單、易讀性高,且擁有大量的學習資源以及活躍的社群支持。之後我進一步在網路上瀏覽並比較各種程式語言後,發現 Python 確實是一個適合初學者的選擇。
雖然 C++、Java、JavaScript 甚至 R 語言在不同領域(如軟體開發、數據分析)都各自有其優勢,但 Python 以直觀的語法、廣泛的應用領域以及豐富的學習資源勝出。與 C++ 和 Java 相比不需要複雜的語法結構,例如 C++ 需要手動宣告變數型態並處理記憶體管理,但 Python 採用的是動態型別並自動管理記憶體,使得程式碼更加簡潔易讀。相較於 R 語言,Python 在數據分析領域之外還能廣泛應用於機器學習、網頁開發與自動化,並且擁有龐大的開源社群,學習過程中可以輕鬆獲取解決方案與實戰範例,大幅加速學習進度。所以如果有像我這樣對程式設計完全陌生的新手,我會非常推薦選擇 Python 作為第一門學習的程式語言。
在正式開始學習 Python 之前,我對程式設計幾乎一無所知,甚至連基本的電腦操作也不太熟悉。現在想想,如果連「檔案路徑」與「命令列」這類概念都不了解,那麼設定 Python 的開發環境將會非常困難。一開始時我按照網路教學的指引下載並安裝 Python,並嘗試設置開發環境。但由於對電腦系統的理解有限,我在這個過程中遇到了不少困難,比如不清楚安裝時應該選擇哪些選項、不知道如何設定環境變數、甚至連 Python 執行檔的路徑都找不到。當時我不斷地透過 ChatGPT 詢問問題,查閱相關的網路文章,並參考社群論壇上的討論,經過一番摸索才成功安裝 Python,環境是用 anaconda 軟體,並讓第一行程式碼順利運行。這個過程讓我學到了一個重要的概念-環境設定是學習程式設計的第一步,如果環境沒有設置好,後續的學習將舉步維艱。因此,這段經歷也讓我意識到基礎的電腦知識是不可或缺的,未來在學習更進階的技術時,必須要補強電腦知識這部分的能力。
在成功安裝環境後,我正式進入 Python 語法的學習階段。剛開始從變數與基本資料型態開始學習,Python 主要有四種常見的資料型態:整數(int)、浮點數(float)、布林變數(bool)和字串(str)。相較於其他語言,Python 的變數宣告相當直觀,無需手動指定型態,例如 x = 10 這樣的寫法即可直接使用,這讓初學者能夠快速理解並應用。之後我嘗試撰寫最簡單的程式來輸出 Hello, World!,發現只需要一行 print("Hello, World!") 即可完成,C++ 的對應寫法則至少需要四行程式碼,包括 #include <iostream> 來引入標頭檔、定義 main() 函式、撰寫 std::cout 來輸出文字,最後還需要 return 0; 來確保程式順利結束。這讓我深刻體會到 Python 在語法設計上的簡潔性與高可讀性,對於初學者來說,選擇一個語法直觀的語言能夠大幅降低學習門檻,讓學習過程更加順利。
進入變數與輸出入的學習階段,input() 和 print() 是最基本且最常用的函式。print() 用來輸出,而 input() 則用來輸入,這兩者的搭配能夠讓程式執行後與使用者互動。我嘗試編寫一個簡單的計算機程式,讓使用者輸入兩個數字,然後計算加總,但我因為忘記將 input() 讀取的字串轉換成數字,因為我不知道 input()的預設變數類型是字串,導致 a + b 的結果變成字串連接,而不是整數型態的相加。這讓我意識到 Python 雖然型別轉換相對靈活,但仍需要注意不同型態之間的運算規則。為了加強這方面的理解,我查詢了 Python 官方文件,裡面有介紹 Python 的用法,但大多為英文很難看懂,所以我不會看解釋,只會看語法。然後瀏覽了一些 YouTube 教學影片,例如程式柴、PAPAYA 教室等,這些資源幫助我更快掌握變數與資料型態的應用。
之後學習條件判斷的單元。我對於這單元的總結是條件判斷的概念相對直觀,if 代表「如果」,elif 代表或著,else 代表「否則」,當條件成立時,執行下行被縮排的程式碼,否則執行 else 區塊內的內容。之後也嘗試寫了一個簡單的成績判斷程式,只要分數大於等於 60 分,就會顯示「及格」,否則就顯示「不及格」。在這裡第一次遇到了縮排錯誤 (IndentationError),Python 的 if else 結構不像 C++ 或 Java 需要 {} 來標示程式區塊,而是使用縮排(indentation)來區分邏輯層級。我一開始總是忘記縮排,導致 Python 無法辨識程式碼的結構,處理錯誤的次數比我想像中更多。剛開始我還不太理解為什麼 Python 會用這種方式來規範程式碼,直到後來查詢 Python 官方文件,並參考 Stack Overflow(論壇) 的討論後才理解,縮排的設計其實是為了讓程式碼保持簡潔且可讀性更高,強制開發者寫出更有結構性的程式碼,也可以說,Python 更值觀看出程式的結構,避免像 C++ 或 Java 那樣因為 {} 位置錯誤使程式又要一行一行看複雜的程式除錯。為了克服這個問題,我慢慢培養在寫 if else 結構時一定要注意對齊的習慣,並且使用 VS Code 這類軟體來幫助自動格式化程式碼,減少錯誤發生。之後進入最重要的篇章-迴圈。
Python 主要有兩種迴圈結構,分別是 for 迴圈和 while 迴圈。for 迴圈通常用來遍歷一組已知範圍內的數據,例如列表、字串或數字範圍,那我最常使用的是 for i in range():,而 while 迴圈則會根據條件的變化來決定是否繼續執行,也就是說在達到某種條件時才停止。那在學習這兩種迴圈時,我一開始感到很順利,但在進一步嘗試應用時卻遇到了一些問題,例如我要重複執行 10 遍時,range()函數要打(1,11),會這樣是因為 range 的函式是(起始值,終值,間隔值),但後來發現終值卻不會顯示,所以在生成時,需要多加注意,剩下就是縮排問題,把它當成跟 if else 一樣的排列方式就好。
之後我很好奇迴圈的應用場景,就問了 gpt,得到解答說可以用在處理大量數據、自動化工作流程、遊戲開發、網頁爬蟲等,多種重複化的動作。因此剛好可以實戰,在我寫了程式用在讀取現實中 Excel 表格的 csv 格式資料、處理網頁爬蟲的內容、甚至是分析大數據時,發現了更多問題,例如數據有缺失,所以易導致計算平均值有誤,或是以自己的現有知識無法解析網頁的程式結構, 我認為這邊開始就是一個分水嶺,所以我做了很多關於學習迴圈應用的練習,相比前兩章,這一單元更注重的是實作而非理解,所以之後的學習比較像是延伸課程,就看各個函式怎麼用,不會用就查字典(Pyhon 官方文件),或是保養自己的程式,因為隨著版本更新,某些函式語法也會跟著更新。
總結的話就是說,Python 的程式結構直觀且易讀,相較於其他程式語言可以在短時間內掌握基礎語法並開始撰寫簡單的程式。但程式設計並不僅僅是學會語法,核心的能力是數學、邏輯思維與大量練習,這些能力對於未來深入學習數據分析、機器學習甚至演算法設計都至關重要。因此,在學習 Python 之前,先打好數學基礎會讓學習過程更加順暢,尤其是對於需要金融數據處理、運算與統計的應用來說,數學概念與實作練習是不可或缺的。
👉請尊重智慧財產權,勿抄襲,以免涉及法律責任,謝謝👈