3

タイトルが少し誤解を招く場合は申し訳ありませんが、関連するタイトル名について少し確信が持てませんでした.

ここのスニペットのようなテキストボックスを作成しようとしています:

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 ("+------------------------------+")

1桁の数字の結果が得られた場合、これはすべてダンディです:

+------------------------------+
|  Die 1:  |       |    Die 2  |
|    2     |       |      6    |
+------------------------------+

ただし、2 桁の数字では次のようになります。2 つの 10 には別のスペースが押し出されます。

+------------------------------+
|  Die 1:  |       |    Die 2  |
|    10     |       |      2    |
+------------------------------+

私は次のようなことができます:

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

など...しかし、これを行うより実用的な方法があると確信しています。

&s を表すために 1 桁を使用する方法はありますか?、および/または必要に応じて 2 桁目を許可するためのパディングがあります。

この問題についてPython Docを見て、0のパディングオプションをいくつか読みましたが、直接役立つものは何もありませんでした。

4

2 に答える 2

8

関数を使用しstring.formatてスペースを埋め込むことができます: (この関数は python 2 と python 3 の両方で機能することに注意してください)

"|      {0: >2d}     |       |      {1: >2d}    |".format(Die1,Die2)

{}s内の01は参照されている引数を表し、コロンの後のスペースは埋め込み文字で>、テキストを右寄せすることを意味し、 はテキスト2の幅を表しd、 は引数が整数であることを指定します。

出力例:

| | 2 | | | 9 |
| | 10 | | | 12 |
于 2013-05-04T03:33:21.823 に答える
1

パディングされた 0 で整数を出力できます。

"|    %02d     |       |      %02d    |" % (Die1,Die2)
于 2013-05-04T03:28:40.773 に答える