如何动态填充输出?

时间:2015-01-02 08:07:04

标签: python

假设我有以下代码:

 lim = #whatever number
 for i in range(lim, -1, -1):
    print(str(i) + "|")

例如,如果lim为20,则输出为:

20|
19|
...etc
5|
4|
...etc 

|始终打印在数字后面,但我希望|在打印时对齐,以便我的输出如下所示:

20|
19|
...etc
5 | <--Notice a space after single digit
4 |
...etc

现在,如果知道lim有多少位数,这很容易,例如,如果我知道它有两位数我可以使用以下数字:

print('{:<2}|'.format(i))

但是,如果我事先不知道|的数字,我如何保持lim符号对齐。例如,假设允许用户输入lim的任何值,如何确保所有内容都正确对齐?

2 个答案:

答案 0 :(得分:3)

使用log

的一种方法
from math import log
pad = int(log(lim, 10)) # lim can't be 0

for i in range(lim, -1, -1):
    print('{num:<{pad}}|'.format(pad=pad, num=i))

答案 1 :(得分:2)

您可以在打印之前使用lim的len来构建格式:

>>> lim=123
>>> f = '{:<'+str(len(str(lim)))+'}|'
>>> f.format(2)
'2  |'
>>> lim=1234
>>> f = '{:<'+str(len(str(lim)))+'}|'
>>> f.format(2)
'2   |'