2017-03-29 62 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