class Board:
def __init__(self):
self.board = self.createBoard()
def createBoard(self):
line = []
for i in range(7):
line.append(' ')
board = []
for i in range(7):
board.append(line)
return board
def showBoard(self):
line = "| "
for x in range(len(self.board)):
for y in range(len(self.board)):
line += self.board[x][y] + " | "
print("-" * 29)
print(line)
line = "| "
print("-" * 29)
if __name__ == '__main__':
board = Board()
board.showBoard()
board.board[1][1] = "O"
board.showBoard()
この本当に奇妙な問題に行き詰まったとき、私は connect-4 python コンソールのデモ/ゲームに取り組んでいました。
上記のコードの出力は次のとおりです。
-----------------------------
| | O | | | | | |
-----------------------------
| | O | | | | | |
-----------------------------
| | O | | | | | |
-----------------------------
| | O | | | | | |
-----------------------------
| | O | | | | | |
-----------------------------
| | O | | | | | |
-----------------------------
| | O | | | | | |
-----------------------------
奇妙なことに、O
これらすべての位置に割り当てたわけではなく、[1][1] の位置にのみ割り当てました。
出力は次のようになると予想していました。
-----------------------------
| | | | | | | |
-----------------------------
| | O | | | | | |
-----------------------------
| | | | | | | |
-----------------------------
| | | | | | | |
-----------------------------
| | | | | | | |
-----------------------------
| | | | | | | |
-----------------------------
| | | | | | | |
-----------------------------
明らかで小さなものを見落としている可能性が非常に高いですが、1時間以上探して試してみましたが、実際には問題を見つけることができません.
私のboard.boardリストが他の2次元リストよりも奇妙であるというわけではありません。
[[' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' ']]
(それは私が得たものですprint(board.board)
)
それをコピーして IDLE に貼り付けると、次のようになります。
>>> a = [[' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' ']]
>>> a[1][1] = "O"
[[' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', 'O', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' ']]
これにより、適切なボード値が得られます。
私のコードで明らかに間違っているのは何ですか? 恥ずかしくて首を横に振るような答えを誰かが見つけたとき、それはおそらく悪いことだと確信しています.
十分な自己恥ずべきことですが、なぜ私のコードboard.board[1][1] = "O"
は値「O」を のすべての行に割り当てるのboard.board
でしょうか?
最初の 1 を 0 ~ 6 の他の数字に変更しても、何も変わりません。それはすべて同じです。