Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建一个子例程,告诉玩家他们输入的坐标何时已被占用_Python_Subroutine - Fatal编程技术网

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

Python 创建一个子例程,告诉玩家他们输入的坐标何时已被占用,python,subroutine,Python,Subroutine,我创建了一个包含所有可用坐标的列表,因此我的想法是,一旦输入坐标,它将从列表中删除,并放入另一个名为take_Coord的列表中 但我只知道我的代码可以比现在更有效我只是不知道如何,如果需要更多的信息,请告诉我 代码如下: Board = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] Coordinate = 0 YCoordinate = 0 ValidMove = Fa

我创建了一个包含所有可用坐标的列表,因此我的想法是,一旦输入坐标,它将从列表中删除,并放入另一个名为take_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
Board=[[0,0,0,0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]]
坐标=0
YCoordinate=0
ValidMove=False
CurrentSymbol=“”
开始符号=“”
播放符号=“”
PlayerTwoSymbol=“”
答案=“”
Aval_坐标=['11','12','13','21','22','23','33','32''31']
采取的协调=0
def CheckValidMove(X坐标、Y坐标、电路板、采取坐标、Aval坐标):
ValidMove=True
采取协调=(''+str(XCoordinate)+str(yccoordinate)+'')
计数=Aval_坐标。计数(取坐标)
如果(XCoordinate<1)或(XCoordinate>3):
ValidMove=False
如果(YCoordinate<1)或(YCoordinate>3):
ValidMove=False
elif计数==0:
ValidMove=False
elif take_Coord==“11”:
Aval_坐标.pop('11')
elif take_Coord==“12”:
Aval_坐标.pop('12')
elif take_Coord==“13”:
Aval_坐标.pop('13')
elif take_Coord==“21”:
Aval_坐标.pop('21')
elif take_Coord==“22”:
Aval_坐标.pop('22')
elif take_Coord==“23”:
Aval_坐标.pop('23')
elif take_Coord==“33”:
Aval_坐标.pop('33')
elif take_Coord==“31”:
Aval_坐标.pop('31')
elif take_Coord==“32”:
Aval_坐标.pop('32')
返回有效移动

是的,差不多就是这样。也不要对变量或函数使用大写名称,它们用于类。另外,
list.pop()
方法需要要删除的索引,而不是字符串。您可能想要使用的是
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