我的代码显示了一个typeError:“function”对象不是subscriptab

2024-10-17 06:18:05 发布

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

这就像我正在制作的一个游戏的“scratch”代码(一个简单的connect4游戏),我只是在尝试我的函数的功能。你知道吗

基本上,我得到的错误是TypeError:“function”对象在第25行是不可下标的。 这是我的密码:

def play():
    grid_height = int(input("Enter the number of rows:")) #Row
    grid_width = int(input("Enter the number of columns:")) #Width
    p1_char= 'e'


    grid(grid_height,grid_width)
    displayGrid(grid,grid_height,grid_width)
    updateGrid(grid,grid_height,grid_width,p1_char)
    displayGrid(grid,grid_height,grid_width)

def grid(grid_height,grid_width):
    grid=[]
    for row in range(grid_height): # FOR ROW
        z =[]
        for col in range(grid_width): # FOR COLUMN
            z.append(" ")
        grid.append(z)
    return grid

def displayGrid(grid,grid_height,grid_width): 
    for row in range(grid_height):
        for col in range(grid_width+1):
            print("|" + grid[row-1][col-1],end = "")
        print()
    print(" "+" ".join([str(i) for i in range(1, 8+1)]))
    return grid

def updateGrid(grid,grid_height,grid_width,p1_char):
    move= int(input('Enter your move: '))
    for i in range(grid_height+1):
        grid[grid_height-1][move-1]= p1_char
        break
    return grid

play()

Tags: inforinputdefrangecolwidthgrid
1条回答
网友
1楼 · 发布于 2024-10-17 06:18:05

这里有两个主要问题:

  1. 您有一个名为grid的函数,并且经常使用名为grid的局部变量。这引起了一些混乱。考虑将grid重命名为createGrid

  2. play()中调用grid(又称createGrid)时,没有将返回值赋给变量。结果,您将函数grid传递给displayGridupdateGrid,这将导致您看到的错误。

相关问题 更多 >