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 リストを使用して移動を保存し、新しい移動が行われるたびにそれらを表示します。これは、2 つの for ループと改行を使用することで実現できますが、これを行う方法がわかりません。ヒントをいただければ幸いです。- 注: 2D リストの行を印刷する際に支援が必要なだけで、それ以外はすべて正常に機能します。

編集:

ダブル for ループを試しました。

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

しかし、一度に 3 つの要素だけを印刷する必要があるため、成功していません。

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 に答える