Python 輸入與輸出

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 條件判斷。

延伸閱讀