2017-03-29 205 views
0

所以我打印出兩個「魚」每行,兩條魚之間的距離的程序是一個製表符「\ t」的,輸出看起來是這樣的:Python的標籤間距

enter image description here

我的問題是,你看,例如,Theodore比Marge長,他們都有一個「\ t」字符。那麼,爲什麼西蒙和瑪吉對齊呢?荷馬和莫德爲什麼處於他們所處的位置?我懷疑有一些無形的網格?我正在使用pycharm

非常感謝!

+1

製表符將使文本光標前進到下一個製表位。例如,如果光標位於第二個製表符停止位置之前,則會前進到該位置。但如果它剛過第二個製表位,它將前進到第三個製表位。所以事情最終會部分排隊。標籤不知道你希望事物與魔法對齊的位置。 – khelwood

+1

如果你想在控制檯中確保表效率,你可以看看pycurses。 –

+0

如果兩個魚類名稱的組合大於「X」字符,則需要1個選項卡,如果它小於「X」,則需要多個選項卡。 –

回答

2

我懷疑有一些不可見的網格?

這正是做標籤,將光標位置移動到下一個可用的選項卡停止,它們基本上網格線。 Tabstops通常每4或8列提供一次。

因此,當您在第8列製表位處打印第5列的\t選項卡時,下一個製表位列將位於第8位。但是,如果您的文本到目前爲止已將您帶到第8列,則下一個停在第16欄。下一組字符是在哪裏打印取決於前面的文字到目前爲止你的距離有多遠。

如果您需要對輸出列進行精確控制,請勿使用選項卡。使用最小字段大小的string formatting來格式化數據。

'<>< {:30} <>< {:30}'.format(
    '({}, {})'.format(vara, varb), 
    '({}, {})'.format(varc, vard)) 

現在輸出字符串將爲每個字段添加至少30個字符,並添加空格以彌補差異。

+0

謝謝,在java中這是不同的?我認爲在Java中添加一個「\ t」是字面上加上標籤的距離 – yyin

+0

@JavaLearner:不,標籤在任何地方工作。 –

+0

謝謝,我想我一直在與標籤有誤解。 – yyin