Python 輸入與輸出

Python 輸入與輸出(Input and Output)

這篇 Python input 與 print 教學將帶你認識程式與使用者互動的兩個基本函式:input() 取得鍵盤輸入、print() 輸出結果。其中有一個初學者必踩的坑:input() 回傳的永遠是字串,拿來做數學運算前必須先轉型。

print() 輸出

print() 可以一次輸出多個值,預設用空格分隔、結尾換行。用 sepend 參數可以改變這個行為:

參數說明預設值
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()sepend 控制輸出格式;input() 取得輸入但永遠回傳字串,要運算先用 int()float() 轉型——這是本篇最重要的一句話。下一篇我們學習讓程式會「做決定」的 if else 條件判斷。

延伸閱讀