我正在尝试创建一个简单的tictactoe游戏,并尝试将行保存到行[]和列到列[],以便我可以通过执行[row] [col]来访问板中的每个元素
我在第一个循环中遍历矩阵时保存了行,但无法保存列索引。关于我做错什么以及如何正确做到的任何想法?
下面是代码:
board = [
['|', '|', '|' ],
['|', '|', '|'],
['|', '|', '|']
]
row = []
col = []
def tictactoe ():
# print('\n'.join([''.join(['{:4}'.format(item) for item in row]) for row in board]))
for i in range(0,len(board)):
row.append(board[i])
for j in (0, len(board)):
col.append(board[j])
print(row, '!!!!!')
print(col)
答案 0 :(得分:2)
尝试
board = [
['|', '|', '|' ],
['|', '|', '|'],
['|', '|', '|']
]
row = []
col = []
def tictactoe ():
# print('\n'.join([''.join(['{:4}'.format(item) for item in row]) for row in board]))
for i in range(0,len(board)):
row.append(board[i])
for j in range(0, len(board[i])):
col.append(board[i][j])
print(row, '!!!!!')
print(col)
基本上在您的示例中,您始终只访问board
列表中的项目(即行),以访问board
列表中列表的项目(即列),您需要首先访问boards
数组中的列表(例如,使用board[i]
),然后在此之后完成您要访问的项目{{1例如。
建议是,不要使用board[i][j]
,而是直接使用列表迭代器,如下所示:for i in range(0, len(board))
。在这种情况下,for i in board
不是整数,而是您正在访问的i
变量的元素。你的代码会变成这样:
board
请注意,访问列的语法也会更改:我们只使用board = [
['|', '|', '|' ],
['|', '|', '|'],
['|', '|', '|']
]
row = []
col = []
def tictactoe ():
# print('\n'.join([''.join(['{:4}'.format(item) for item in row]) for row in board]))
for i in board:
row.append(i)
for j in i:
col.append(j)
print(row, '!!!!!')
print(col)
而不是board[i][j]
,而for j in i
变量将包含列值本身。 (因为j
是i
变量)
答案 1 :(得分:0)
您在以下行中迭代列时忘记了范围:
for j in (0, len(board)):
答案 2 :(得分:0)
除了Fernando的答案解释你的方法出了什么问题以及如何解决它之外,以下是如何以简化的方式实现同样的事情:
def tictactoe():
rows = board # board is already an array containing the rows.
cols = zip(*board)
print(rows)
print(cols)