第一個早上,Maya 七點打開姑媽的咖啡攤,第一位客人要的是一張小票,不是一段解釋。她手裡有一個名字、一個價格,還有幾行程式碼,要把它們變成客人一眼能看清的字。print() 裡到底是哪一部分在決定長相?
每個 Python 程式都要先產生一個看得見的結果。print() 是檢查變數、驗證想法和展示輸出最簡單的方式。本課你會學習字串、分隔符和 f-string,用它們拼出清楚的提示資訊。 你還會排版一張多列收據,並檢查看不見的空白字元。
print() 是一個函式
把一個或多個值傳給 print(),Python 會把它們轉成文字並寫到螢幕上。預設情況下,多個值之間用空格分隔,行尾會換行。你可以用 sep 改變分隔符,用 end 改變行尾。
print("拿鐵", 4.5)
print("拿鐵", 4.5, sep=": ")
print("載入中", end="...")
print("完成")分隔符與行尾
字串需要引號
字串就是引號裡的文字。單引號和雙引號都可以,但兩端必須一致。三引號可以讓字串跨越多行。如果文字裡有英文撇號,可以用雙引號包住,或者用反斜槓跳脫。
name = "Maya"
message = 'It\'s Python'
print(name)
print(message)建立字串
f-string 插入變數
在左引號前加 f,再把表達式放進花括號,就能把變數嵌進文字。這是組合文字和變數最清楚的方式。像 .2f 這樣的格式說明符可以讓金額保留兩位小數。
name = "Maya"
price = 4.5
print(f"你好,{name}!")
print(f"總計:{price:.2f} 元")更易讀的格式化輸出
排版一行收據
真實輸出通常是一張表,而不是一個值。格式說明符可以設定最小寬度並對齊:< 左對齊,> 右對齊,.2f 固定兩位小數。列寬不必完全相同,但保持一致,收據才容易讀。
name = "Latte"
qty = 2
price = 4.5
line_total = qty * price
print(f"{name:<8} {qty:>2} x {price:>5.2f} = {line_total:>6.2f}")
print(f"{'TOTAL':<8} {'':>2} {'':>5} {line_total:>6.2f}")寬度、對齊和固定小數位
先檢查原始輸出,再猜格式
print() 會隱藏空字串、空格和換行之間的區別;repr() 會把這些字元顯示出來,len() 會數出長度。輸出不對時,先檢查原始值,比反覆猜格式更快。
message = " Latte \n"
print(repr(message))
print(len(message))
print(repr(message.strip()))
print(message.strip().split())repr() 會暴露隱藏字元
回傳值,而不只是列印
print() 只負責把文字寫出來,回傳值是 None;return 則把值交回給呼叫者。只要一個函式會被使用第二次,這個區別就很重要。只會列印的函式只能給人看,會回傳值的函式才能被測試、拼接或寫進 JSON。如果你在期望得到文字的地方看到了 None,先檢查函式是不是只列印而沒有回傳。
def label(name):
return f"商品:{name}"
text = label("拿鐵")
print(text)
print(label("茶"), end=" | ")
print(len(text))回傳的字串可以繼續使用
本課要點
- print() 可以接收多個值,預設在末尾換行。
- sep 控制多個值之間的文字,end 控制這一行結束後追加什麼。
- 字串兩端引號要比對,多行文字可以用三引號。
- f-string 可以直接把變數和表達式嵌入文字。
- 格式說明符能對齊列;repr() 能暴露 print() 隱藏的空白字元。
- print() 是給人看的,return 是把值交給程式的其他部分。
常見錯誤
- 忘記右引號,或者單引號和雙引號混用。
- 直接用 + 把字串和數字相加,沒有先轉換型別。
- 在 f-string 裡只寫變數名、不寫花括號,結果變數名被原樣列印。
- 把 repr() 當成另一種 print(),忘了它會顯示引號和跳脫字元。
- 呼叫一個只會列印的函式,卻期望它把值回傳。
列印一張兩行小票:每行包含商品名和價格,用短橫線分隔。
動手試試
改改變數、先預測輸出,再執行程式碼。第一次點擊「執行程式碼」時會下載 Python 執行時,可能需要幾秒鐘。
練習本課
12 道題,作答後立即看到解釋。