打印语句对齐和填充

Ben*_*eno 2 python python-2.7 python-3.x

如果标题有点误导,请原谅我,但我对相关的标题名称有点不确定.

我试图围绕一些像文本片段的文本框:

Die1 = random.randint(1,10)
Die2 = random.randint(1,10)
Die3 = random.randint(1,10)

if Die1 > Die2:
    print ("+------------------------------+")
    print ("|  Die 1:  |       |    Die 2  |")
    print ("|    %d     |       |      %d    |" % (Die1,Die2))
    print ("+------------------------------+")


else:
    print ("+------------------------------+")
    print ("|  Die 1:  |       |    Die 2  |")
    print ("|    %d     |       |      %d    |" % (Die1,Die2))
    print ("+------------------------------+")
Run Code Online (Sandbox Code Playgroud)

如果我得到1位数字的结果,这都是花花公子:

+------------------------------+
|  Die 1:  |       |    Die 2  |
|    2     |       |      6    |
+------------------------------+
Run Code Online (Sandbox Code Playgroud)

然而,twp数字将给我这个:,另一个空间将被推出两个十.

+------------------------------+
|  Die 1:  |       |    Die 2  |
|    10     |       |      2    |
+------------------------------+
Run Code Online (Sandbox Code Playgroud)

我可以这样做:

if Die1 > Die2 and Die1 or Die2 == 10:
    print ("+------------------------------+")
    print ("|  Die 1:  |       |    Die 2  |")
    print ("|      %d     |       |      %d    |" % (Die1,Die2))
    print ("+------------------------------+")
Run Code Online (Sandbox Code Playgroud)

等......但我确信有更实际的方法可以做到这一点.

有没有办法使用单个数字来表示&s?和/或一些填充,以便在需要时允许第二个数字.

我在这个问题上看过Python Doc,我读了一些0的填充选项,但没有什么能直接帮助我.

Xym*_*ech 7

您可以使用该string.format函数填充空格:(请注意,此函数在python 2和python 3中都有效)

"|      {0: >2d}     |       |      {1: >2d}    |".format(Die1,Die2)
Run Code Online (Sandbox Code Playgroud)

{}s中,0并且1表示正在引用哪个参数,冒号后面的空格是填充字符,>意味着右对齐文本,2是文本的宽度,并d指定参数是整数.

示例输出:

|       2     |       |       9    |
|      10     |       |      12    |