1. 前言
在使用 Python 開發程式時,「標準輸入」是接收使用者輸入並進行處理的關鍵功能。特別是透過 input()
函式從鍵盤獲取資料,可以實現與使用者的互動。
本文章將針對 Python 初學者,從標準輸入的基本用法到進階應用進行詳細解說,並提供具體範例。從簡單的程式碼到更複雜的應用,幫助您循序漸進地學習。
2. Python 標準輸入的基本用法
2.1 input()
函式是什麼?
input()
函式用於接收使用者輸入並返回字串。例如,以下程式碼會要求使用者輸入姓名,然後輸出歡迎訊息。
name = input("請輸入您的名字: ")
print(f"你好,{name}!")
在這段程式碼中,使用 input()
取得輸入內容並存入變數 name
,然後輸出問候語。
2.2 輸入數值資料與型別轉換
由於 input()
獲取的資料預設為字串,如果需要將其視為數值,則需要使用 int()
或 float()
進行型別轉換。
age = int(input("請輸入您的年齡: "))
print(f"您今年 {age} 歲。")
在這個範例中,程式將輸入的字串轉換為整數,然後輸出使用者的年齡。

3. 處理多行標準輸入
3.1 多行字串輸入
如果需要接收多行輸入,可以使用 for
迴圈或列表推導式來更有效地處理。例如,以下程式碼要求使用者輸入 3 個不同的單字:
words = [input(f"請輸入第 {i+1} 個單字: ") for i in range(3)]
print(f"輸入的單字: {words}")
這段程式碼會接收 3 行輸入,並將其存入列表中,再將結果輸出。
3.2 空格分隔的多重輸入
當需要在一行內輸入多個數據時,可以使用 split()
函式來按空格分隔輸入。例如,讓使用者輸入一串數字,並將其轉換為整數列表:
numbers = list(map(int, input("請輸入數字(用空格分隔): ").split()))
print(f"輸入的數字: {numbers}")
在這個例子中,程式使用 split()
將輸入拆分,並透過 map()
將其轉換為整數型別。
4. 標準輸入的應用:處理檔案與二進位數據
4.1 使用 sys.stdin
處理標準輸入
透過 sys.stdin
,可以直接從標準輸入讀取數據,這對於處理大量文本數據或從命令列讀取檔案內容非常有用。
import sys
data = sys.stdin.read()
print(f"接收的數據: {data}")
這段程式碼會從標準輸入讀取所有數據,並輸出結果。
4.2 簡單處理二進位數據
如果需要處理二進位數據,例如圖片或二進位格式的檔案,可以使用 sys.stdin.buffer
來讀取:
import sys
binary_data = sys.stdin.buffer.read()
print(binary_data)
這段程式碼會從標準輸入讀取二進位數據並直接輸出,適用於需要處理圖片或其他非文本格式的資料。

5. 實用案例:使用標準輸入解決問題
5.1 使用標準輸入計算平均值
以下範例展示如何從標準輸入接收整數並計算它們的平均值。這種處理方式在競技程式設計或數據處理中經常使用。
N = int(input("請輸入要輸入的數字個數: "))
numbers = list(map(int, input("請輸入數字(用空格分隔): ").split()))
average = sum(numbers) / N
print(f"平均值為 {average}。")
此程式首先要求使用者輸入數字的個數,接著輸入對應的數字並存入列表,最後計算平均值並輸出。
5.2 直到輸入結束為止接收數據
以下程式碼會持續接收使用者輸入,直到偵測到空行為止。這種方式適用於需要長時間處理輸入數據的情境。
data = []
while True:
line = input()
if line == "":
break
data.append(line)
print("輸入的數據: ", data)
在這個例子中,程式會持續接收輸入,直到使用者輸入空行,最後輸出所有收集到的數據。
6. 常見錯誤與解決方法
6.1 如何處理 ValueError
當使用者輸入的數據類型不符合期望時,例如輸入文字而非數字,會產生 ValueError
。我們可以使用 try-except
來避免錯誤發生。
try:
age = int(input("請輸入您的年齡: "))
except ValueError:
print("輸入錯誤,請輸入數字!")
這段程式碼確保使用者輸入的是數字,否則會顯示錯誤訊息。
6.2 如何處理 EOFError
當程式在讀取標準輸入時,遇到文件結束 (EOF) 但沒有適當處理時,會產生 EOFError
。以下方式可避免此問題:
import sys
for line in sys.stdin:
if line.strip() == "":
break
print(line.strip())
這樣可以確保程式不會因為 EOF 而中斷。
7. 總結
在 Python 中使用標準輸入能夠實現與使用者的互動,並使程式更具彈性。我們從基本的 input()
函式,到進階的檔案和二進位數據處理方法,學習了標準輸入的多種應用方式。透過熟練運用這些技巧,可以大幅提升 Python 程式的實用性和靈活度。