如何动态填充输出?
How to dynamically pad output?
假设我有以下代码:
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
有多少位数字,这很容易,例如,如果我知道它有 2 位数字,我可以使用以下内容:
print('{:<2}|'.format(i))
但是,如果我事先不知道 lim
的数字,我将如何保持 |
符号对齐。例如,假设允许用户为 lim
输入任何值,我如何确保所有内容都正确对齐?
使用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))
您可以使用 lim 的 len
在打印前构建格式:
>>> lim=123
>>> f = '{:<'+str(len(str(lim)))+'}|'
>>> f.format(2)
'2 |'
>>> lim=1234
>>> f = '{:<'+str(len(str(lim)))+'}|'
>>> f.format(2)
'2 |'
假设我有以下代码:
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
有多少位数字,这很容易,例如,如果我知道它有 2 位数字,我可以使用以下内容:
print('{:<2}|'.format(i))
但是,如果我事先不知道 lim
的数字,我将如何保持 |
符号对齐。例如,假设允许用户为 lim
输入任何值,我如何确保所有内容都正确对齐?
使用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))
您可以使用 lim 的 len
在打印前构建格式:
>>> lim=123
>>> f = '{:<'+str(len(str(lim)))+'}|'
>>> f.format(2)
'2 |'
>>> lim=1234
>>> f = '{:<'+str(len(str(lim)))+'}|'
>>> f.format(2)
'2 |'