在Python中将两个相似的代码片段合并在一起

时间:2017-08-03 12:35:19

标签: python

我对python很新,并且遇到了我正在处理的代码问题。正如你在下面我的代码中看到的那样,它基本上是相同的,唯一区分两者的是player/opponentTile,我想将这两者合并在一起,但我不想确切知道如何。任何建议表示赞赏! (我不仅可以if self.legalMove(playerTile, opponentTile, x, y) == False:)。

我也不想在self, playerTile, opponentTile中同时考虑def ....Move,我只想使用例如playerMove(playerTile)调用代码中的定义(如果我这样做的话)弹出一个ValueError)

def playerMove(self,playerTile):
    if self.legalMove(playerTile, x, y) == False:
        continue
    else:
        break

def opponentMove(self,opponentTile):
    if self.legalMove(opponentTile, x, y) == False:
        continue
    else:
        break

2 个答案:

答案 0 :(得分:3)

这些方法看起来完全一样。你只需要一个。

将其重命名为:

def move(self, tile)

你可以在两种情况下使用它。

答案 1 :(得分:2)

如果它是相同的,你只需要传递你想要移动的实体

def entity_move(self,entity_tile): 
    possibilities = '0 1 2 3 4 5 6 7 8 9'.split()
    while True:
        move = input().lower()
        if len(move) == 2 and move[0] in possibilities and move[1] in possibilities:
            x = int(move[0])
            y = int(move[1])
            if self.legalMove(entity_tile, x, y) == False:
                continue
            else:
                break
        else:
            print('Not a valid input!')