Python標準輸入的基礎與應用|初學者指南與實用案例

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 而中斷。

RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

7. 總結

在 Python 中使用標準輸入能夠實現與使用者的互動,並使程式更具彈性。我們從基本的 input() 函式,到進階的檔案和二進位數據處理方法,學習了標準輸入的多種應用方式。透過熟練運用這些技巧,可以大幅提升 Python 程式的實用性和靈活度。