【发布时间】:2013-09-11 03:41:52
【问题描述】:
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 之间的任何其他数字也不会改变任何内容。都是一样的。
【问题讨论】:
-
我确信这是 100 个其他问题的重复,但不幸的是,很难找出好的搜索词来找到它,所以很难责怪任何人重复这个问题......右边的相关问题肯定是相关的,但似乎没有一个是重复的。
标签: python multidimensional-array assign