猿问

如何替换网格中的对角线条目

经过长时间试图解决这个难题但没有成功,我不得不寻求帮助。到目前为止,我设法使用 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


交互式爱情
浏览 178回答 3
3回答

跃然一笑

为什么不只是size = 5board = []for row in range(size):    board.append(["O"]*row + ["X"] + ["O"]*(size-row-1))

墨色风雨

如果您确定您的板是正方形,则对角线元素将是行号和列号相同的地方。您可以通过 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

www说

board = [] for x in range(0,5): board.append(["O"] * 5)印刷(板)def print_board(board): for i,row in enumerate(board): row[i]="X"印刷板(板)
随时随地看视频慕课网APP

相关分类

Python
我要回答