【发布时间】:2014-01-21 22:35:37
【问题描述】:
我需要帮助为数独中的 9 个 3x3 块中的每一个创建一个列表。所以我有一个代表原始数独板的列表列表(零表示空):
board=[[2,0,0,0,0,0,0,6,0],
[0,0,0,0,7,5,0,3,0],
[0,4,8,0,9,0,1,0,0],
[0,0,0,3,0,0,0,0,0],
[3,0,0,0,1,0,0,0,9],
[0,0,0,0,0,8,0,0,0],
[0,0,1,0,2,0,5,7,0],
[0,8,0,7,3,0,0,0,0],
[0,9,0,0,0,0,0,0,4]]
我需要将这些转换为包含 3x3 块的列表列表。比如:
[[2,0,0,0,0,0,0,4,8],[etc]]
我尝试创建一个名为“blocks”的列表,其中包含 9 个其他列表,每个列表中只有零。所以它看起来像:
blocks=[[0,0,0,0,0,0,0,0,0],[etc]
然后我使用 while 循环来更改列表中的值:
BLOCK_COUNT=0
BOARD_COUNT=0
while BLOCK_COUNT<len(blocks):
blocks[BLOCK_COUNT][0]=board[BOARD_COUNT][BOARD_COUNT]
blocks[BLOCK_COUNT][1]=board[BOARD_COUNT][BOARD_COUNT+1]
blocks[BLOCK_COUNT][2]=board[BOARD_COUNT][BOARD_COUNT+2]
blocks[BLOCK_COUNT][3]=board[BOARD_COUNT+1][BOARD_COUNT]
blocks[BLOCK_COUNT][4]=board[BOARD_COUNT+1][BOARD_COUNT+1]
blocks[BLOCK_COUNT][5]=board[BOARD_COUNT+1][BOARD_COUNT+2]
blocks[BLOCK_COUNT][6]=board[BOARD_COUNT+2][BOARD_COUNT]
blocks[BLOCK_COUNT][7]=board[BOARD_COUNT+2][BOARD_COUNT+1]
blocks[BLOCK_COUNT][8]=board[BOARD_COUNT+2][BOARD_COUNT+2]
BLOCK_COUNT+=1
BOARD_COUNT+=3
然而,这给了我一个索引错误。如果我创建了 2 个“BLOCK_COUNT”分别为 3 和 6 的 while 循环,那么我会得到一个更好的答案,但它仍然没有给我正确的 3x3 块。所以我几乎不知道如何做到这一点。谢谢。
【问题讨论】:
-
如果您希望我们调试您的错误,请给我们完整的错误和回溯,而不仅仅是错误的描述。
-
不,正如我所说,我需要帮助创建 3x3 块的列表。我只是提供了有关错误的信息,认为知道我哪里出错可能很有用。我假设它不需要?
-
因为你没有给我们足够的信息来调试你的代码,每个人都忽略了这部分,而是为你编写了全新的代码。全新的代码可能会更好——至少如果你能理解它——但是知道你哪里出错了不是很有帮助吗?