3

25-1 という数字を含むリストがあります。すべての数字が一致するゲームボードのように印刷しようとしています。

ここに画像の説明を入力

これを行うことで、リストに行を追加する方法を見つけました:

_b = map(str, board)
_board = ' | '.join(_b)

各行に5つの数字を印刷する方法を知っています..しかし、すべての数字を並べるのに苦労しています。これを行う方法はありますか?

4

6 に答える 6

4

最長の数がどれくらいになるかがわかっている場合は、次のいずれかの方法を使用できます。

文字列「5」と希望する幅 3 文字の場合:

  • str.rjust(3)文字列を与えます' 5'
  • str.ljust(3)文字列を与えます'5 '
  • str.center(3)文字列を与えます' 5 '

rjust小学校で長い足し算を習うような所が並んでいるので、私は数字が好きな傾向があります ;)

それはあなたに次のようなものを残します:

_b = map(lambda x: str(x).rjust(3), board)
_board = ' | '.join(_b)

または代わりに、ジェネレーター式を使用します。

_board = ' | '.join(str(x).rjust(3) for x in board)
于 2013-05-15T23:53:17.123 に答える
1

2D マトリックス表現のためのやや一般化されたソリューション:

board = [ [22, 1 , 33], [41, 121, 313], [0, 1, 123112312] ]
maxd = max(len(str(v)) for b in board for v in b) + 1 
l    = []
for b in board:
    l.append("|"+" |".join([ '{n: {w}}'.format(n=v, w=maxd) for v in b]) + " |")
sepl = "\n" + '-'*len(l[0]) + "\n"
print sepl, sepl.join(l), sepl
于 2013-05-16T00:08:19.143 に答える