主題: 學習筆記

Python 電腦科學與程式設計導論 第二講:字串、輸入輸出與分支

MIT OpenCourseWare 6.100L 第二講筆記:字串、主控台輸入輸出、比較運算子與條件分支。

歡迎來到 Python 的學習旅程!這篇文章將帶領你掌握程式中最核心的三大支柱:如何處理文字、如何與使用者溝通,以及如何讓程式學會「思考」做出決策。本指南內容參考自 MIT 6.100L 課程,旨在為初學者提供最紮實的實作基礎。


一、 字串處理:不僅僅是文字,更是字元序列

在 Python 中,字串(String)是一連串有順序且對大小寫敏感的字元序列。無論是字母、數字、空白鍵還是特殊符號,只要被包含在單引號或雙引號中,Python 就會將其視為字串物件。

  • 本段落回答的關鍵問題:
    • 索引(Indexing)從哪開始? 記得在電腦科學中,索引一律從 0 開始。字串 “abc” 的第一個字元是索引 0。
    • 如何擷取子字串? 使用切片語法 [start:stop:step]。Python 會包含 start不包含 stop(即到 stop-1 為止)。
    • 什麼是「不可變性(Immutability)」? 字串一旦建立就無法修改內容。如果你想把 “car” 變成 “bar”,你必須建立一個新字串,而不是直接修改原有的字元。

💡 需要你補充:[實測數據] 在實際開發處理大規模資料時,使用 + 運算子與 .join() 方法在效能上有顯著差異,建議在此處補充相關的基準測試數據。


二、 程式的「呼吸」:實現真正互動的 Input 與 Output

一個實用的程式需要能接收外部訊息並回傳結果,這就是輸入(Input)與輸出(Output)。

  • 本段落回答的關鍵問題:
    • 為何在腳本中需要 print() 在互動式環境(Shell)中輸入表達式會自動顯示,但在 .py 檔案中,只有被 print() 包裹的內容才會輸出到螢幕。
    • 如何處理使用者的輸入? 使用 input() 讀取的資料永遠是字串。如果你需要算術運算,必須進行「型別轉換(Casting)」,例如使用 int()float()
    • f-strings 有什麼優勢? 這是 Python 3.6 之後最強大的格式化工具。在字串前加 f 並用 {} 包裹變數,Python 會在執行時自動計算並轉換成文字。

💡 需要你補充:[版本資訊] F-string 在最新版本的 Python(如 3.10+)中支援更簡便的偵錯寫法(例如 f"{var=}"),建議在此說明版本差異與新語法優點。


三、 邏輯分支:賦予程式決策的能力

當程式不再只是線性執行,而是能根據條件選擇路徑時,它才具備了智慧。

  • 本段落回答的關鍵問題:
    • === 的區別? 單個 = 是「賦值」(Assign),雙個 == 才是「測試相等性」。
    • 如何組合邏輯? 利用 and(兩者皆真)、or(任一為真)與 not(反轉真假值)來處理複雜條件。
    • 為什麼「縮進(Indentation)」至關重要? Python 利用縮進而非大括號來定義程式碼區塊。正確的縮進決定了哪幾行程式碼屬於 ifelse 區塊。
    • if-elif-else 如何運作? 程式會依序檢查條件,並執行「第一個」為真的區塊,隨後便會跳過其餘分支。

💡 需要你補充:[專案背景 / 實作練習] 請根據你的經驗提供一個「巢狀分支」的練習題(例如:設計簡易 ATM 提款驗證流程),幫助讀者練習邏輯判斷。


💡 專家觀點:關於 Debug 的小建議

MIT 課程中強調一個核心概念:「早點測試,經常測試(Debug early, debug often)」。不要一次寫完一整長串程式碼才執行,寫一個功能就測一個功能,利用 Shell 隨時實驗你的想法。

類比思考: 字串處理就像處理食材標籤,你可以裁剪或排序,但原始標籤不能塗改;Input/Output 是與客人的點餐對話;而分支邏輯則是主廚的判斷食譜:如果客人過敏(if),就更換食材;否則(else)照原樣烹飪。


📖 外部學習資源

若想深入研究本文章所提及的基礎概念,歡迎造訪 MIT OpenCourseWare