Python 輸入與輸出(Input and Output)
這篇 Python input 與 print 教學將帶你認識程式與使用者互動的兩個基本函式:input() 取得鍵盤輸入、print() 輸出結果。其中有一個初學者必踩的坑:input() 回傳的永遠是字串,拿來做數學運算前必須先轉型。
print() 輸出
print() 可以一次輸出多個值,預設用空格分隔、結尾換行。用 sep 與 end 參數可以改變這個行為:
| 參數 | 說明 | 預設值 |
|---|---|---|
sep | 多個值之間的分隔字串 | 空格 " " |
end | 輸出結尾的字串 | 換行 "\n" |
print(2026, 6, 5)
print(2026, 6, 5, sep="-")
print("不換行", end="")
print("接在同一行")
執行輸出:
2026 6 5
2026-6-5
不換行接在同一行
input() 輸入
input() 會暫停程式等待使用者輸入,按下 Enter 後把輸入內容當作字串回傳。括號內可以放提示文字:
name = input("請輸入你的名字:")
print(f"你好,{name}!")
執行範例:
請輸入你的名字:小明
你好,小明!
input() 的型別陷阱與轉換
input() 回傳的一定是字串,就算使用者輸入數字也一樣:
a = input("輸入第一個數字:") # 使用者輸入 10
b = input("輸入第二個數字:") # 使用者輸入 5
print(a + b) # 字串串接,不是加法!
執行範例:
輸入第一個數字:10
輸入第二個數字:5
105
10 + 5 變成了 105,因為兩個字串用 + 是串接。要做數學運算,必須先用 int() 或 float() 轉型:
| 函式 | 說明 | 範例 |
|---|---|---|
int(x) | 轉成整數 | int("10") → 10 |
float(x) | 轉成浮點數 | float("3.14") → 3.14 |
str(x) | 轉成字串 | str(100) → "100" |
a = int(input("輸入第一個數字:")) # 輸入 10
b = int(input("輸入第二個數字:")) # 輸入 5
print(f"{a} + {b} = {a + b}")
執行範例:
輸入第一個數字:10
輸入第二個數字:5
10 + 5 = 15
常見錯誤
1. ValueError: invalid literal for int() with base 10
對無法轉成數字的字串呼叫 int(),例如使用者輸入了 abc 或空白。正式程式中會用 try except 處理(第 25 篇例外處理會教),目前先確保輸入的是數字。
2. 忘記轉型導致的字串串接
如上面範例,input() 的結果直接相加變成 105。只要值來自 input(),要運算前一律先想「轉型了沒」。
3. int(“3.14”) 也會報 ValueError
int() 不能直接轉「小數格式的字串」。先 float("3.14") 再 int(),或直接用 float()。
總結
print() 用 sep、end 控制輸出格式;input() 取得輸入但永遠回傳字串,要運算先用 int() 或 float() 轉型——這是本篇最重要的一句話。下一篇我們學習讓程式會「做決定」的 if else 條件判斷。