Int对象不可下标,但它是lis

2024-04-23 16:18:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为一个象棋应用程序编写一些代码。函数中的一行代码是:

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\u history\u int的长度是0,所以prev变成了[0,0,0,0],但是稍后在check\u 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))得到列表。我想不出哪里出了问题。有人能帮忙吗?你知道吗


Tags: and函数代码boardtruemoveifcheck
1条回答
网友
1楼 · 发布于 2024-04-23 16:18:47
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'>

所以,要解决这个问题,请找出您试图从一维列表中提取的内容,或者将列表重构为二维列表。你知道吗

相关问题 更多 >