25-1 という数字を含むリストがあります。すべての数字が一致するゲームボードのように印刷しようとしています。
これを行うことで、リストに行を追加する方法を見つけました:
_b = map(str, board)
_board = ' | '.join(_b)
各行に5つの数字を印刷する方法を知っています..しかし、すべての数字を並べるのに苦労しています。これを行う方法はありますか?
最長の数がどれくらいになるかがわかっている場合は、次のいずれかの方法を使用できます。
文字列「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)
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