我正在尝试为国际象棋应用程序编写一些代码。函数中的一行代码是:
if check_mate(board, True) == True:
value = 999
将死函数是:
def check_mate(board, previous):
if previous != True:
prev = previous
elif previous == True:
if len(move_history_int) != 0:
prev = move_history_int[-1]
else:
prev = [0,0,0,0]
move_history_int的长度为0,所以prev变为[0,0,0,0]
,但后来在check_mate中,它给了我错误
if prev[-1][0] == element - 1 and prev[-1][1] == z and prev[-1][2] == element - 1 and prev[-1][3] == row:
TypeError: 'int' object is not subscriptable
执行print(prev)
给出[0,0,0,0]
,尝试print(type(prev))
给出列表。我想不出什么问题。有人可以帮忙吗?
答案 0 :(得分:0)
if prev[-1][0] == element - 1 and prev[-1][1] == z and prev[-1][2] == element - 1 and prev[-1][3] == row:
TypeError: 'int' object is not subscriptable
此错误告诉您上一个不能双下标。这是因为您使用的是一维列表,如我们在以下内容中看到的:
prev = [0,0,0,0]
由于它是一维列表,因此调用prev [-1] [0]会尝试在prev [-1]处调用列表的第一个列表项...但是prev [-1]本身并不是一个列出,就像您这样做一样:
>>> prev = [0,0,0,0]
>>> prev[-1]
0
>>> type(prev[-1])
>>> <type 'int'>
因此,要解决此问题,请找出您要从一维列表中提取的内容,或将列表重构为二维列表。