Python矩阵列和行检查

Python矩阵列和行检查,python,matrix,tic-tac-toe,Python,Matrix,Tic Tac Toe,我一直在做动态的井字游戏 在检查行和列时,我遇到了一个问题 我桌子上的拳头看起来像 size? : 4 #input 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Player 1 plays : 我正在检查列中是否充满了X或O def column_check(): col_winner = None cx = [] co = [] for i in range(1): for j in ra

我一直在做动态的井字游戏 在检查行和列时,我遇到了一个问题

我桌子上的拳头看起来像

size? : 4 #input
  0   1   2   3 
  4   5   6   7 
  8   9  10  11 
 12  13  14  15 
Player 1 plays : 
我正在检查列中是否充满了X或O

def column_check():
col_winner = None
cx = []
co = []
for i in range(1):
    for j in range(0, game_size ** 2, game_size):
        if matrix[j] == player1:
            cx.append(j)
        elif matrix[j] == player2:
            co.append(j)

if len(cx) == game_size:
    col_winner = player1
elif len(co) == game_size:
    col_winner = player2
return col_winner
我为我工作得很好 但是我不能为行检查设置for循环。 我试过这个代码块

def row_check():
row_winner = None
rx = []
ro = []
for i in range(game_size):
    for j in range(i * game_size, i * game_size + game_size):

        if matrix[j] == player1:
            rx.append(j)
        elif matrix[j] == player2:
            ro.append(j)

if len(rx) == game_size:
    row_winner = player1
elif len(ro) == game_size:
    row_winner = player2

return row_winner
但它检查矩阵中的所有数字。它应该按行检查。
我该怎么做呢?

我假设您被绑定到column\u check()中使用的结构,并且一个4的游戏需要一行4个;游戏大小为3。 我的解决方案如下:

def row_check():
    row_winner = ""
    for i in range(game_size):
        ro = []
        rx = []
        for j in range(i * game_size, i * game_size + game_size):
            if matrix[j]==player1:
                rx.append(j)
            elif matrix[j] == player2:
                ro.append(j)
        if rx == range(i*game_size, i*game_size+game_size):
            row_winner = player1
        elif ro == range(i * game_size, i * game_size + game_size):
            row_winner = player2
        return row_winner

我写了一个这样的代码块,它工作得非常好。 这比我想象的要简单

def row_check():
row_winner = None
for i in range(game_size):
    if matrix[i * game_size:i * game_size + game_size].count(player1) == game_size:
        row_winner = player1
    elif matrix[i * game_size:i * game_size + game_size].count(player2) == game_size:
        row_winner = player2

return row_winner

在这个任务中使用循环有点低效和复杂,但我猜这是一种课堂作业?您是专门绑定到python的基本功能还是允许使用扩展库?不,我不喜欢使用扩展库:/or只是重置付款人1=-1和播放器2=1,然后检查总和;)另外:如果你的“矩阵”列表是一个正方形,那么两者都使用一个循环。