对于我的项目,我必须做一个tic-tac-toe求解器,我想请求一些优化代码的帮助。
任务:根据获胜者(x或o),返回适当的结果
我是怎么做到的:我检查了结果的水平,垂直和对角线策略
我需要帮助:我主要重复相同的代码,但每个案例的if语句不同,我只是想知道是否有更通用的方法来执行此操作。
现行守则: (对角线胜利)
if diagcounter==size and (board[0][0]=="x") :
print("Win Diagonally")
return "X has won"
elif diagcounter==size and (board[0][0]=="o"):
print("Win Diagonally")
横向胜利:
if vertcounter==size and board[0][x]=="x":
print("Win vertically")
return "X has won"
elif vertcounter==size and board[0][x]=="o":
print("Win vertically")
return "O has won"
如您所见,它们几乎相同,但由于我需要在现场检查信件,我不知道如何优化它。
答案 0 :(得分:0)
您可以创建一个函数来处理“获胜”并让您的if语句调用它。
def win(method, team):
print("Win "+method)
return team+" has won"
if diagcounter==size and (board[0][0]=="x") :
return(win("diagonally", "x"))
elif diagcounter==size and (board[0][0]=="o"):
return(win("diagonally", "o"))
if vertcounter==size and board[0][x]=="x":
return(win("vertically", "x"))
elif vertcounter==size and board[0][x]=="o":
return(win("vertically", "o"))