Python矩阵列行检查
Python matrix column and row check
我一直在做动态井字游戏
在检查行和列时,我遇到了一个问题。
我所有的拳头table长得像;
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_check() 中使用的结构,并且您需要连续 4 个才能使 game_zize 为 4; 3 game_size = 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
我一直在做动态井字游戏 在检查行和列时,我遇到了一个问题。
我所有的拳头table长得像;
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_check() 中使用的结构,并且您需要连续 4 个才能使 game_zize 为 4; 3 game_size = 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