【发布时间】:2019-06-29 18:42:14
【问题描述】:
我正在开发一个小程序来与计算机玩tictactoe,但是在检查谁是获胜者时,我创建了一个函数来检查代表棋盘的数组中是否有任何穿过的'X'或'O'板垂直,水平和交叉。只是通过查看代码,我可以看到很多重复,我只是在寻找有关如何优化它的建议。
我已经尝试将'X's 和'O's 的if 语句组合起来,但我无法将它们组合起来,因为我需要每个都在输出中打印不同的消息。第一个 if 语句检查每一行的所有 X 值,第二个垂直检查,第三和第四个检查全面的值。
for i in range(3):
if myDict[0][i] == 'X' and myDict[1][i] == 'X' and myDict[2][i] == 'X':
print('You Lose!!!')
DisplayBoard(myDict)
return False
elif myDict[i][0] == 'X' and myDict[i][1] == 'X' and myDict[i][2] == 'X':
print('You Lose!!!')
DisplayBoard(myDict)
return False
if myDict[0][0] == 'X' and myDict[1][1] == 'X' and myDict[2][2] == 'X':
print('You Lose!!!')
DisplayBoard(myDict)
return False
elif myDict[0][2] == 'X' and myDict[1][1] == 'X' and myDict[2][0] == 'X':
print('You Lose!!!')
DisplayBoard(myDict)
return False
for i in range(3):
if myDict[0][i] == 'O' and myDict[1][i] == 'O' and myDict[2][i] == 'O':
print('You Win!!!')
DisplayBoard(myDict)
return False
elif myDict[i][0] == 'O' and myDict[i][1] == 'O' and myDict[i][2] == 'O':
print('You Win!!!')
DisplayBoard(myDict)
return False
if myDict[0][0] == 'O' and myDict[1][1] == 'O' and myDict[2][2] == 'O':
print('You Win!!!')
DisplayBoard(myDict)
return False
elif myDict[0][2] == 'O' and myDict[1][1] == 'O' and myDict[2][0] == 'O':
print('You Win!!!')
DisplayBoard(myDict)
return False
return True
程序可以工作,只是想找到优化代码的方法。
【问题讨论】:
标签: python arrays optimization conditional-statements