我有一个代表纸牌游戏的列表列表。该列表表示卡的行和列。我试图用整齐的列和行打印卡片,但我似乎无法弄明白。这就是我所拥有的:
maxCol = len(tableaus[0])
for row in tableaus:
rowLength = len(row)
if rowLength > maxCol:
maxCol = rowLength
tab = []
for colIndex in range(maxCol):
tab.append([])
for row in tableaus:
if colIndex < len(row):
tab[colIndex].append(row[colIndex])
for s in tab:
print("{:4s}".format(str(s)))
目前的输出是:
=================Tableaus=================
---1----2----3----4----5----6----7----8---
[K♠, Q♠, J♠, 10♠, 9♠, 8♠, 7♠, 6♠]
[5♠, 4♠, 3♠, 2♠, A♠, K♥, Q♥, J♥]
[10♥, 9♥, 8♥, 7♥, 6♥, 5♥, 4♥, 3♥]
[2♥, A♥, K♦, Q♦, J♦, 10♦, 9♦, 8♦]
[7♦, 6♦, 5♦, 4♦, 3♦, 2♦, A♦, K♣]
[Q♣, J♣, 10♣, 9♣, 8♣, 7♣, 6♣, 5♣]
[4♣, 3♣, 2♣, A♣]
但应该是:
=================Tableaus=================
---1----2----3----4----5----6----7----8---
K♠ Q♠ J♠ 10♠ 9♠ 8♠ 7♠ 6♠
5♠ 4♠ 3♠ 2♠ A♠ K♥ Q♥ J♥
10♥ 9♥ 8♥ 7♥ 6♥ 5♥ 4♥ 3♥
2♥ A♥ K♦ Q♦ J♦ 10♦ 9♦ 8♦
7♦ 6♦ 5♦ 4♦ 3♦ 2♦ A♦ K♣
Q♣ J♣ 10♣ 9♣ 8♣ 7♣ 6♣ 5♣
4♣ 3♣ 2♣ A♣
tableaus = [[K♠, 5♠, 10♥, 2♥, 7♦, Q♣, 4♣], [Q♠, 4♠, 9♥, A♥, 6♦, J♣, 3♣], [J♠, 3♠, 8♥, K♦, 5♦, 10♣, 2♣], [10♠, 2♠, 7♥, Q♦, 4♦, 9♣, A♣], [9♠, A♠, 6♥, J♦, 3♦, 8♣], [8♠, K♥, 5♥, 10♦, 2♦, 7♣], [7♠, Q♥, 4♥, 9♦, A♦, 6♣], [6♠, J♥, 3♥, 8♦, K♣, 5♣]]
任何提示?
答案 0 :(得分:2)
目前,您只需拨打一次str.format
即可格式化每一行。这并不是你想要的,因为行是一个列表,用括号和不均匀的间距打印出来。您希望将格式应用于列表的每个元素。尝试:
for row in tab:
print("".join(format(str(item), ">4") for item in row)
答案 1 :(得分:0)
这是一个“最小,完整,可验证的答案”,假设表格如图所示定义。如果这对您不起作用,您现在知道我为什么要求MCVE了。
#coding:utf8
tableaus = [['K♠', 'Q♠', 'J♠', '10♠', '9♠', '8♠', '7♠', '6♠'],
['5♠', '4♠', '3♠', '2♠', 'A♠', 'K♥', 'Q♥', 'J♥'],
['10♥', '9♥', '8♥', '7♥', '6♥', '5♥', '4♥', '3♥'],
['2♥', 'A♥', 'K♦', 'Q♦', 'J♦', '10♦', '9♦', '8♦'],
['7♦', '6♦', '5♦', '4♦', '3♦', '2♦', 'A♦', 'K♣'],
['Q♣', 'J♣', '10♣', '9♣', '8♣', '7♣', '6♣', '5♣'],
['4♣', '3♣', '2♣', 'A♣']]
print('=================Tableaus=================')
print('---1----2----3----4----5----6----7----8---')
for row in tableaus:
print(''.join(format(c,'>5') for c in row))
这使用列表推导来格式化宽度为5,右对齐字段的行中的每个元素,然后将每个元素连接成一个字符串。
=================Tableaus================= ---1----2----3----4----5----6----7----8--- K♠ Q♠ J♠ 10♠ 9♠ 8♠ 7♠ 6♠ 5♠ 4♠ 3♠ 2♠ A♠ K♥ Q♥ J♥ 10♥ 9♥ 8♥ 7♥ 6♥ 5♥ 4♥ 3♥ 2♥ A♥ K♦ Q♦ J♦ 10♦ 9♦ 8♦ 7♦ 6♦ 5♦ 4♦ 3♦ 2♦ A♦ K♣ Q♣ J♣ 10♣ 9♣ 8♣ 7♣ 6♣ 5♣ 4♣ 3♣ 2♣ A♣