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 | | | | | |
-----------------------------
| | | | | | | |
-----------------------------
| | | | | | | |
-----------------------------
| | | | | | | |
-----------------------------
| | | | | | | |
-----------------------------
| | | | | | | |
-----------------------------
我很可能遗漏了一些明显的小东西,但我已经寻找并尝试了一个多小时,但我确实找不到问题。
我的 board.board 列表并不比任何其他二维列表更奇怪。
[[' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' ']]
(这就是我得到的,当我print(board.board)
)
将其复制并粘贴到 IDLE 中我得到以下内容:
>>> a = [[' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' ']]
>>> a[1][1] = "O"
[[' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', 'O', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' ']]
这让我得到了正确的董事会价值。
我的代码中有什么明显错误以至于我错过了它?我很确定,当你们中的任何一个人找到我会羞愧地摇头的答案时,情况可能就那么糟糕。
自羞得够多了,为什么我的代码board.board[1][1] = "O"
将值“O”分配给中的每一行board.board
?
将第一个 1 更改为 0-6 之间的任何其他数字也不会改变任何内容。全部都是一样。