讀古今文學網 > 父與子的編程之旅:與小卡特一起學Python > 21.2 水平間隔製表符 >

21.2 水平間隔製表符

我們剛才看到了如何控制垂直間隔(通過增加換行,或者使用逗號來避免換行)。現在我們來看如何利用製表符控制屏幕上內容的水平間隔。

製表符(Tab,也叫做進格符)在按列對齊方面非常有用。要瞭解製表符是如何工作的,可以想一想屏幕上的每一行都劃分為多個大小相同的塊時是什麼樣。下面假設每一個塊為 8 個字符寬。插入一個製表符時,就會移到下一個塊開始的位置。

要瞭解具體怎麼做,最好的辦法就是試一試。製表符的特殊代碼是 \t,所以可以在交互模式先試試:

>>> print 'ABC\tXYZ'ABC     XYZ  

注意 XYZABC 有幾個字符的間隔。實際上,XYZ 距離這一行的起始位置正好是 8 個字符。這是因為塊的大小是 8。也可以這樣講:每 8 個字符之後有一個製表點(tab stop)。

這個例子中執行了不同的 print 語句,這裡增加了一些陰影來顯示製表點在哪裡:

可以將屏幕(或者每一行)視為按 8 個空格為一塊來擺放。注意,儘管 ABC 序列越來越長,但 XYZ 仍保持在原來的位置上。\t 告訴 Python 讓 XYZ 從下一個製表點開始,或者從下一個可用的塊開始。不過,一旦 ABC 序列長到將第一塊填滿,Python 就會把 XYZ 下移到下一個製表點。

按列組織內容時,製表符很有用,能讓所有內容都對齊。下面就要利用這一點以及我們瞭解的關於循環的知識,打印一個關於正方形和立方體的表格。在 IDLE 中打開一個新窗口,鍵入代碼清單 21-1 中的小程序,保存這個程序並運行。(我把這個程序命名為 squbes.py,這是「squares and cubes」的簡寫。)

代碼清單 21-1 打印正方形和立方體的程序

print "Number \tSquare \tCube"for i in range (1, 11):    print i, '\t', i**2, '\t', i**3  

運行這個程序時,應該能看到輸出像下面顯示的那樣準確地對齊:

>>> ====================== RESTART ======================>>>Number  Square  Cube1       1       12       4       83       9       274       16      645       25      1256       36      2167       49      3438       64      5129       81      72910      100     1000  

如何打印反斜線

由於反斜線字符(\)用來表示特殊打印代碼,如果我們確實想打印一個 \ 字符, 而不是將其作為代碼的一部分打印,該如何告訴 Python 呢?我們的技巧是把兩個反斜線放在一起:

>>> print 'hi\\there'hi\there  

第一個 \ 告訴 Python 接下來是一些特殊的內容,第二個 \ 告訴 Python 這些特殊的內容就是 \ 字符。

術語箱

當你使用兩個反斜線來打印一個反斜線字符時,第一個反斜線叫做「轉義字符」(escape character)。我們說第一個反斜線會將第二個反斜線「轉義」,這樣第二個反斜線就會被當成普通字符輸出,而不是當成特殊字符。