歡迎來到第 6.4 章:輸入與輸出!

在本章中,我們將探索程式是如何與「外部世界」進行溝通的。將程式想像成廚房裡的廚師:為了做出一道菜,廚師需要食材(輸入),而當餐點完成後,需要送給顧客(輸出)。如果沒有輸入和輸出,電腦程式就只能在那裡發呆,什麼也做不了!

我們將學習如何從用戶那裡獲取資訊、如何將這些資訊永久儲存在檔案中,以及如何確保我們獲取的資訊不是「垃圾數據」。讓我們開始吧!


1. 用戶輸入與「適當的回應」

大多數程式都需要與人類互動。用戶輸入 (User input) 指的是程式暫停並等待用戶輸入某些內容的過程。

運作原理:

當程式要求輸入時,通常會將答案儲存在一個變數 (variable) 中,以便稍後使用。為了做到「適當的回應」,程式應該利用這些輸入來決定下一步該做什麼。

例子: 如果遊戲問你的名字,而你輸入了「Alex」,程式應該說「你好 Alex」,而不是僅僅說「你好用戶」。

小撇步:資料類型

別忘了!當用戶輸入內容時,電腦通常會將其視為字串 (String)(文字)。如果你想用它進行計算(例如加法運算),你必須先告訴電腦將其轉換為整數 (Integer)實數 (Real number)

總結: 輸入是用戶向程式提供資料的方式;程式隨後必須使用這些資料來提供相關的結果。


2. 驗證:檢查食材

你有聽過「垃圾進,垃圾出」(Garbage In, Garbage Out) 這句話嗎?它的意思是,如果你給電腦錯誤的資料,它就會給你錯誤的結果。驗證 (Validation) 是電腦執行的一項自動檢查,用以確保在程式處理資料之前,資料是合理的。

根據課程大綱,你需要掌握四種主要的驗證類型:

  • 存在檢查 (Presence Check): 這能確保用戶沒有留下空白欄位。它會檢查資料是否確實存在!(例如:網頁表單上的必填欄位)。
  • 長度檢查 (Length Check): 這會檢查輸入的字元數是否正確。(例如:英國郵遞區號必須介於 6 到 8 個字元之間)。
  • 範圍檢查 (Range Check): 這會檢查數字是否落在指定的最小值和最大值之間。(例如:年齡必須在 0 到 120 之間)。
  • 格式檢查 (Pattern Check): 這會檢查輸入是否符合特定的格式或樣式。(例如:日期必須是 DD/MM/YYYY 的格式)。

記憶小秘訣:L-P-R-P 清單

為了記住這些類型,試著記住這句話:Lovely Penguins Read Papers(可愛的企鵝讀報紙)。

Length(長度)、Presence(存在)、Range(範圍)、Pattern(格式)。

要避免的常見錯誤: 驗證無法檢查資料是否 100% 正確!如果你把名字拼成「Smithe」而不是「Smith」,電腦並不知道你打錯字了。它只知道這些資料是合理的(例如:它不是空白且不是數字)。

總結: 驗證的目的是確保資料在被使用前是合理的。


3. 檔案處理:逗號分隔值 (CSV)

當你關掉電腦時,儲存在變數記憶體 (RAM) 中的任何資料都會消失。為了永久保存資料,我們將其儲存到硬碟或 SSD 上的檔案 (File) 中。

什麼是 CSV 檔案?

CSV (Comma Separated Values) 檔案是一種簡單的純文字檔,其中每筆資料都以逗號分隔。它就像一個非常簡單的試算表。

CSV 檔案內容範例:
Alex, 15, Blue
Sam, 14, Red
Jordan, 16, Green

檔案的讀寫:

要在程式中使用檔案,通常要遵循三個步驟:

  1. 開啟 (Open): 告訴電腦你想使用哪個檔案,以及你要讀取 (Read) 還是寫入 (Write)
  2. 處理 (Process): 將檔案中的行讀取到程式中,或是將新資料寫入檔案。
  3. 關閉 (Close): 完成後必須關閉檔案,以便「儲存」更改並釋放記憶體。

你知道嗎? CSV 檔案之所以受歡迎,是因為它們是「通用」的。你可以用記事本、Microsoft Excel 開啟它們,甚至可以編寫 Python 程式來讀取它們!

總結: 檔案允許資料的永久儲存,而 CSV 檔案使用逗號將資料組織成列和欄。


4. 驗證身份:你是誰?

驗證身份 (Authentication) 是證明用戶身分的過程。這對於安全性至關重要。

在程式設計中如何運作:

程式通常會透過要求兩項資訊來實作身份驗證:ID(如使用者名稱)和密碼 (Password)。隨後程式會執行查詢 (Lookup)

查詢過程:
1. 用戶輸入 ID 和密碼。
2. 程式在儲存的列表(如檔案或資料庫)中尋找該 ID。
3. 如果找到該 ID,它會檢查輸入的密碼是否與該 ID 對應的密碼相符。
4. 如果兩者相符,用戶即通過「身份驗證」並獲准進入!

快速複習箱:
- 資料驗證 (Validation): 資料是否合理?(例如:密碼長度是否足夠?)
- 身份驗證 (Authentication): 用戶是否被授權?(例如:密碼是否正確?)

總結: 身份驗證利用 ID 和密碼查詢來確保程式的安全性和隱私。


重點總結

輸入/輸出是用戶與電腦之間的橋樑。要成為優秀的程式設計師,你需要做到:
1. 使用輸入讓你的程式具備互動性。
2. 使用驗證來防止「垃圾」資料破壞你的程式碼。
3. 使用CSV 檔案來儲存你的資料,以供日後使用。
4. 使用身份驗證確保只有合適的人才能存取你的資料。

如果剛開始覺得檔案處理有點複雜,請別擔心——只要在程式碼中多練習幾次開檔和關檔,這些操作很快就會變得像呼吸一樣自然!