在Python 2.7中格式化

oax*_*att 3 python python-2.7

我有一个列格式问题:

from math import sqrt
n = raw_input("Example Number? ")
n = float(n)
sqaureRootOfN = sqrt(n)

print '-'*50
print ' # of Decimals', '\t', 'New Root', '\t', 'Percent error'
print '-'*50
for a in range(0,10):
    preRoot = float(int(sqaureRootOfN * 10**a))
    newRoot = preRoot/10**a
    percentError = (n - newRoot**2)/n*100
    print ' ', a, '\t\t', newRoot, '\t\t', percentError, '%'
Run Code Online (Sandbox Code Playgroud)

它出来像:

在此输入图像描述

不在同一列!?!

Mik*_*iak 9

@Bjorn在这里使用String.format规范得到了正确的答案.Python的字符串格式化器具有非常强大的方法来正确对齐事物.这是一个例子:

from math import sqrt
n = raw_input("Example Number? ")
n = float(n)
sqaureRootOfN = sqrt(n)

print '-'*75
print ' # of Decimals', ' ' * 8, 'New Root', ' ' * 10, 'Percent error'
print '-'*75
for a in range(0,10):
    preRoot = float(int(sqaureRootOfN * 10**a))
    newRoot = preRoot/10**a
    percentError = (n - newRoot**2)/n*100
    print " {: <20}{: <25}{: <18}".format(a, newRoot, str(percentError) + ' %')
Run Code Online (Sandbox Code Playgroud)

请注意,我使用空格来代替选项卡.这是因为选项卡实际上并不是您想要在这里使用的选项,因为选项卡如何区分事物的规则是不一致的(并且取决于您的终端/查看器设置是什么).

这就是答案:

---------------------------------------------------------------------------
 # of Decimals          New Root            Percent error
---------------------------------------------------------------------------
 0                   9.0                      18.1818181818 %   
 1                   9.9                      1.0 %             
 2                   9.94                     0.198383838384 %  
 3                   9.949                    0.0175747474747 % 
 4                   9.9498                   0.00149490909092 %
 5                   9.94987                  8.7861717162e-05 %
 6                   9.949874                 7.45871112931e-06 %
 7                   9.9498743                1.4284843602e-06 %
 8                   9.94987437               2.14314187048e-08 %
 9                   9.949874371              1.33066711409e-09 %
Run Code Online (Sandbox Code Playgroud)