我正在接收"list assignment index out of range"
def createBoard(rows, cols, mines):
board = []
for n_row in range(rows):
board.append([])
for n_col in range(cols):
board.append([])
# Place a random letter at each location in the board
for n_row in range(rows):
for n_col in range(cols):
board[n_row][n_col] = ("C")
答案 0 :(得分:0)
执行此操作的方法,board是一个列表,其中包含(rows + cols)空列表,而不是包含行列的列表,每列都有行间距。你想要做的是创建一个列表,其中包含行列表,然后追加' C' cols时间,如下:
def createBoard(rows, cols, mines):
board = []
for n_row in range(rows):
board.append([])
for n_row in range(rows):
for n_col in range(cols):
board[n_row].append("C")
return board #add this line if you wish the function to actually return the board
运行
global_board = createBoard(3,3,4)
print(global_board)
给了我:
[['C', 'C', 'C'], ['C', 'C', 'C'], ['C', 'C', 'C']]
答案 1 :(得分:0)
在您尝试将电路板中的每个位置初始化为for
的嵌套("C")
循环中,您要将位置编入索引,最大值等于cols
。但是,在createBoard
中,您要将空列表附加到board
对象。因此,board[n_row][n_col]
引用的位置实际上并不存在,因此也就是错误。
您应该在创建后打印board
以确保它是您期望的尺寸。
如果您想在每个位置使用字母C初始化电路板,您可以执行以下操作。您可以将初始化和创建阶段组合在一起。
def createBoard(rows, cols, mines):
board = []
for n_row in range(rows):
row = []
row.extend(['C'] * cols)
board.append(row)
return board
for n_row in range(rows)
为您提供rows
行数。 ['C'] * cols
会创建一个cols
个数字为' C'在它中,你可以放在每一行。