创建一个子程序来告诉玩家他们输入的坐标何时已被占用

Creating a subroutine to tell a player when the coordinates that they have entered are already occupied

我创建了一个包含所有可用坐标的列表,所以我的想法是,一旦输入坐标,它就会从列表中删除并放入另一个名为 Taken_Coord 的列表中。

但我只知道我的代码可以比现在更高效我只是不确定如何,如果需要更多信息请告诉我 这是代码:

Board = [[0, 0, 0, 0],
         [0, 0, 0, 0],
         [0, 0, 0, 0],
         [0, 0, 0, 0]]

Coordinate = 0
YCoordinate = 0
ValidMove = False
CurrentSymbol = ''
StartSymbol = ''
PlayerOneSymbol = ''
PlayerTwoSymbol = ''
Answer = ''
Aval_coordinate = ['11','12','13','21','22','23','33','32''31']
Taken_Coord = 0

def CheckValidMove(XCoordinate, YCoordinate, Board, Taken_Coord, Aval_coordinate):
ValidMove = True
Taken_Coord = (''+str(XCoordinate) + str(YCoordinate) + '')
count = Aval_coordinate.count(Taken_Coord)
if (XCoordinate < 1) or (XCoordinate > 3):
    ValidMove = False
if(YCoordinate < 1) or (YCoordinate > 3):
    ValidMove = False
elif count == 0:
    ValidMove = False
elif Taken_Coord == '11':
    Aval_coordinate.pop('11')
elif Taken_Coord == '12':
    Aval_coordinate.pop('12')
elif Taken_Coord == '13':
    Aval_coordinate.pop('13')
elif Taken_Coord == '21':
    Aval_coordinate.pop('21')
elif Taken_Coord == '22':
    Aval_coordinate.pop('22')
elif Taken_Coord == '23':
    Aval_coordinate.pop('23')
elif Taken_Coord == '33':
    Aval_coordinate.pop('33')
elif Taken_Coord == '31':
    Aval_coordinate.pop('31')
elif Taken_Coord == '32':
    Aval_coordinate.pop('32')
return ValidMove

是的,就像是。也不要对变量或函数使用大写名称,它们用于 类。 list.pop() 方法也需要您要删除的索引,而不是字符串。 Want 你大概要用的是remove()

def check_valid_move(x_coordinate, y_coordinate, board, taken_coord, aval_coordinate):
    taken_coord = f"{x_coordinate}{y_coordinate}"
    if x_coordinate and y_coordinate not in range(1,4):
        return False
    if taken_coord not in aval_coordinate:
        return False
    aval_coordinate.remove(taken_coord)
    return True