我还在学习python。我刚刚编写了这个方法来确定玩家是否已经赢得了井字游戏,给定的棋盘状态如下:'[['o','x','x'],['x','o','-'],['x','o','o']]'
def hasWon(board):
players = ['x', 'o']
for player in players:
for row in board:
if row.count(player) == 3:
return player
top, mid, low = board
for i in range(3):
if [ top[i],mid[i],low[i] ].count(player) == 3:
return player
if [top[0],mid[1],low[2]].count(player) == 3:
return player
if [top[2],mid[1],low[0]].count(player) == 3:
return player
return None
我突然想到,我多次检查 3 个字符的列表,并且可以将检查重构为自己的方法,如下所示:
def check(list, player):
if list.count(player) == 3:
return player
...但后来意识到真正要做的只是改变行,例如:
if [ top[i],mid[i],low[i] ].count(player) == 3:
return player
到:
if check( [top[i],mid[i],low[i]], player ):
return player
...坦率地说,这似乎并没有太大的改进。你有没有更好的重构方法?或者一般来说是一个更 Pythonic 的选项?我很想听听!