1

我目前正在用 Python 制作井字游戏,我想让用户在每次移动时都能看到棋盘。用户正在与计算机对战(我已经对其进行了编码,以便计算机分析棋盘并采取行动),然后每个玩家都关闭,直到玩家获胜、平局或失败。我想打印的是这样的:

moveList=[['X','-','-'],['O','X','-'],['X','O','-']])

<------->
< x - - > #element 1 of the list, so the first sublist
< o x - > #element 2 of the list, so the second sublist
< x o - > #element 3 of the list, so the third sublist
<------->

我在哪里建立页眉和页脚(我知道如何做到这一点),并使用存储移动的 2D 列表以在每次进行新移动时显示它们。这将通过使用两个 for 循环和换行符来完成,但我不确定如何做到这一点。任何提示将不胜感激!- 注意:我只需要一些帮助来打印 2D 列表的行,其他一切都很好。

编辑:

我尝试了一个双循环:

for a in range(len(moveList)):
     for b in range(len(moveList[a])):
          print moveList[a][b],

但是没有成功,因为我需要它一次只打印三个元素。

4

1 回答 1

2

由于moveList是可迭代的,因此最好直接迭代它,而不是迭代一个范围,然后用它来索引列表。

print '<------->'
for row in moveList:
  print '< ' + ' '.join(row) + ' >'
print '<------->'

一个聪明的替代方法str.join可能是使用带有*符号的列表解包,例如

for row in moveList:
  print '< {} {} {} >'.format(*row)
于 2013-03-26T00:20:32.550 回答