在 Python 中,用戶輸入是透過內建函式 input() 來完成的。
它允許程式從終端(或命令列)接收用戶輸入,並將其作為字串返回。
基礎用法
input() 函式可以用來提示用戶輸入內容。
name = input("請輸入你的名字: ") # 用戶輸入
print(f"你好, {name}!") # 顯示輸入的結果
輸出請輸入你的名字: Alice 你好, Alice!
age = int(input("請輸入你的年齡: ")) # 轉換為整數
height = float(input("請輸入你的身高(以公尺為單位): ")) # 轉換為浮點數
print(f"你的年齡是 {age} 歲,身高是 {height:.2f} 公尺。")
輸出請輸入你的年齡: 25 請輸入你的身高(以公尺為單位): 1.75 你的年齡是 25 歲,身高是 1.75 公尺。
由於 input() 的返回值總是 字串型別 (str),如果需要處理數值,可以使用 int() 或 float() 進行轉換。
在 Python 中,處理不定行輸入可以使用以下幾種方式,具體取決於輸入來源和需求:
可以使用 split() 方法將單行輸入分隔成多個值,或者通過 for 迴圈多次接收輸入。
data = input("請輸入三個數字(以空格分隔): ").split() # 將輸入分割為清單
numbers = list(map(int, data)) # 轉換成整數清單
print(f"輸入的數字是: {numbers}")
請輸入三個數字(以空格分隔): 5 10 20 輸入的數字是: [5, 10, 20]
lines = []
for _ in range(3): # 接收三行輸入
lines.append(input("請輸入內容: "))
print("你輸入的內容是:")
print("\n".join(lines))
當我們不知道輸入的行數時,最直觀的方法就是一直讀取輸入,直到遇到一個特定的結束標記或達到檔案結尾。Python 提供了幾種方式來處理這種情況。
#初始化一個空字符串 result 用來儲存最終的結果。
result = ""
#使用 while True 創造一個無限循環。
while True:
line = input()
# 當用戶輸入內容為空行並按下enter後,表示輸入結束,跳出循環。
if not line:
break
result += line + "-"#將讀取到的行連同 - 拼接至 result。
print(result)
優點:
簡單易懂,適合初学者。
可以靈活處理各種輸入。
預期使用者可能會輸入不符合預期格式的數據時,當輸入結束標誌不確定時,
可以使用 input() 配合 try-except,適用於未知行數的情況,為了防止用戶輸入無效資料
使用 try-except 處理不定行輸入的優點:
lines = [] # 創建一個空列表,用來存儲每行的輸入內容
try:
while True:
line = input().strip() # 使用 input() 來讀取每行的輸入,並用 strip() 去掉首尾空白
lines.append(line) # 將每行輸入追加到 lines 列表中
except EOFError:
pass # 遇到 EOFError(表示輸入結束)時停止讀取,不進行任何其他操作
# 處理 lines 列表中的每一行輸入
for line in lines:
print(line) # 逐行打印出列表中的每個元素
代碼詳解:
1.初始化 lines 列表:lines = []
:創建一個空列表,用於存儲每行的輸入。
2.嘗試無限循環讀取輸入:while True
: 進入一個無限循環,預期會不斷從標準輸入讀取新行。
3.讀取並處理每行輸入:line = input().strip()
:使用 input() 讀取一行輸入。.strip() 去掉每行開頭和結尾的空白或換行符,避免多餘空格影響後續處理。每行輸入被存儲為 line。
4.將輸入行添加到列表中:lines.append(line)
:使用 .append() 方法將每行輸入逐一添加到 lines 列表中。
5.捕獲 EOFError (End Of File Error)異常:except EOFError:
EOFError 表示無更多輸入,通常在使用 Ctrl+D (Unix/Mac) 或 Ctrl+Z (Windows) 終止輸入後觸發。捕獲 EOFError 後會退出 try 區塊。
6.逐行打印存儲的輸入內容:for line in lines:
:遍歷 lines 列表,逐行打印出之前收集的所有輸入內容。
name = input("請輸入名字(預設:Anonymous): ") or "Anonymous"
print(f"你好, {name}!")
2.強制輸入特定格式:例如,限制輸入數字範圍或文字長度。
while True:
value = input("請輸入 1 到 10 的數字: ")
if value.isdigit() and 1 <= int(value) <= 10:
print(f"你輸入的數字是 {value}")
break
print("輸入無效,請再試一次!")
sys.stdin
(適用於大多數競賽、終端的批量輸入)import sys
lines = []
for line in sys.stdin:
lines.append(line.strip()) # 去掉每行的換行符
# 處理 lines 列表中的每一行輸入
for line in lines:
print(line) # 或對每行進行進一步處理
lines = []
while True:
line = input().strip()
if line == "": # 當遇到空行時結束
break
lines.append(line)
# 處理 lines 列表中的每一行輸入
for line in lines:
print(line)
n = int(input("請輸入行數: ")) # 假設第一行表示後續行數
lines = [input().strip() for _ in range(n)]
# 處理 lines 列表中的每一行輸入
for line in lines:
print(line)
進階輸入法文章:Multiple line input 處理未知行數輸入的 Python 程式