1

このボードを中央に配置しようとしています。これはコードです。%* sで試しましたが、うまくいきませんでした。何か案が?

board = [["1","2","2"],["8*1","2@3","5*6"],["9","5","8"],["2","2","2"],
     ["5*6","6*8","0@2"],["1","2","8"],["1","9","8"],["2*7","7*5","4@2"],["1","3","3"]]

counter = 0

print("--------------+---------------+-------------------")

for row in board:
    counter += 1
    print("|"      "%s"     "|") % ("       |      ".join(row).center(47))
    if counter == 3 or counter == 6 or counter == 9:
        print("---------------+---------------------+--------------")

すべてのボックスの出力は次のようになります

        +-----------+
        | 1 | 1 | 9 |

        |2@3|1*6|7*2|

        | 4 | 1 | 2 |
        +-----------+
4

3 に答える 3

2

これはあなたが望むものです、私は信じています:

board=[["1","2","2"],["8*1","2@3","5*6"],["9","5","8"],["2","2","2"],
["5*6","6*8","0@2"],["1","2","8"],["1","9","8"],["2*7","7*5","4@2"],["1","3","3"]]
counter=0

print ("----------------+---------------+----------------")

for row in board:
        counter+=1
        s="|"
        for column in row:
                s += column.center(15) + "|"
        print(s)
        if counter==3 or counter==6 or counter==9:
                print ("----------------+---------------+----------------")

出力:

----------------+---------------+----------------
|       1       |       2       |       2       |
|      8*1      |      2@3      |      5*6      |
|       9       |       5       |       8       |
----------------+---------------+----------------
|       2       |       2       |       2       |
|      5*6      |      6*8      |      0@2      |
|       1       |       2       |       8       |
----------------+---------------+----------------
|       1       |       9       |       8       |
|      2*7      |      7*5      |      4@2      |
|       1       |       3       |       3       |
----------------+---------------+----------------
于 2012-07-16T02:58:18.233 に答える
1
("|"      "%s"     "|")

"|"これは、スペース"%s""|"区切られた3つの文字列リテラルです。これらはリテラルであるため、Pythonはコンパイル時に結合します(文字列を含む変数ではありません。この種の分析はコンパイル時に実行できません)。したがって、全体は「|%s|」と同等です。

文字列にスペースを含める場合は、文字列にスペースを含めます: "|%s |"、各辺に必要なスペースの数を指定します。または、文字列の乗算と加算の演算を使用して文字列を作成します。"|" + " " * n + "%s" + " " * n + "|"たとえば、n各辺に必要なスペースの数は次のとおりです。

于 2012-07-16T02:54:58.547 に答える
1

私はあなたのコードを変更して、あなたが求めていたものに近いものを生成しました:

board = [["1","2","2"],["8*1","2@3","5*6"],["9","5","8"],
         ["2","2","2"],["5*6","6*8","0@2"],["1","2","8"],
         ["1","9","8"],["2*7","7*5","4@2"],["1","3","3"]]

counter = 0

print("+-----------+")

for row in board:
    counter += 1
    print("|%s|" % "|".join(c.center(3) for c in row))
    if counter == 3 or counter == 6 or counter == 9:
        print("+-----------+")

これは以下を生成します:

+-----------+
| 1 | 2 | 2 |
|8*1|2@3|5*6|
| 9 | 5 | 8 |
+-----------+
| 2 | 2 | 2 |
|5*6|6*8|0@2|
| 1 | 2 | 8 |
+-----------+
| 1 | 9 | 8 |
|2*7|7*5|4@2|
| 1 | 3 | 3 |
+-----------+
于 2012-07-16T02:57:46.143 に答える