长时间尝试解决此难题但未成功后,我不得不寻求帮助。到目前为止,我设法使用python构建了网格,但是对角地插入了一个字符串,超出了我的语言理解范围。
请在下面查看我的代码:
board = []
for x in range(0,5):
board.append(["O"] * 5)
print(board)
def print_board(board):
for row in board:
print(" ".join(row))
print_board(board)
O O O O O
O O O O O
O O O O O
O O O O O
O O O O O
我从这里尝试逐行并弹出每行的最后一行,并交替插入,例如x。但是,我失败了:
我需要得到以下结果:
x O O O O
O x O O O
O O x O O
O O O x O
O O O O x
答案 0 :(得分:2)
如果确定板子是正方形,则对角线元素将是行号和列号相同的位置。您可以通过row = board [rowNum]逐行访问每一行,然后row [colNum]将为您提供单个元素。如果rowNum == colNum,则您在对角线上。您可以像下面一样将两者压在一起(board [i] [i])。
注意:如果您的电路板是一个列表(可变对象),在这样的函数中调用它,则即使不返回“ boardObject”,也会更改传递到boardObject的变量的内容,因此请直接转到该对象。
def replace_diag(boardObject, replacement):
for i in range(len(boardObject)):
boardObject[i][i] = replacement
答案 1 :(得分:1)
为什么不只是
size = 5
board = []
for row in range(size):
board.append(["O"]*row + ["X"] + ["O"]*(size-row-1))
答案 2 :(得分:0)
您是说要在i == j
处写x吗?
board = []
for x in range(0,5):
board.append(["O"] * 5)
print(board)
def print_board(board):
for row in board:
print(" ".join(row))
for i in range (0, 5):
for j in range(0, 5):
if i == j:
board[i][j] = 'x'
print(board)
答案 3 :(得分:0)
Python中有一个非常方便的循环函数,称为 enumerate 。它不仅返回可迭代的元素,而且还返回其索引-看看:
def print_board(board):
for i, row in enumerate(board):
row[i] = 'x'
print(" ".join(row))
请注意,这会更改您的主板2D阵列。如果您不想这样做,可以例如添加一个辅助变量。
答案 4 :(得分:0)
board = [] 对于x在范围(0,5)中: board.append([“ O”] * 5)
打印(板)
def print_board(board): 对于我,请列举(板): 行[i] =“ X”
print_board(板)