Python 为什么它总是说TypeError:';发电机&x27;调用预定义进程时,对象不可下标?

Python 为什么它总是说TypeError:';发电机&x27;调用预定义进程时,对象不可下标?,python,python-3.x,Python,Python 3.x,其名称为:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def randomise_Chests_Bandits (sign,xSize,ySize,grid,pX,pY) : import random x = random.randint(0,xSize-1) #get a random x coordinate y = random.randint(0,ySize-

其名称为:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def randomise_Chests_Bandits (sign,xSize,ySize,grid,pX,pY) :

    import random
    x = random.randint(0,xSize-1) #get a random x coordinate
    y = random.randint(0,ySize-1) #get a random y coordinate
    if (x == pX and y == pY) or (grid[x][y] != " "):
        grid = randomise_Chests_Bandits(sign,xSize,ySize,grid,pX,pY)
    else: 
        grid[x][y] = sign 
    return grid
为什么它总是说TypeError:“generator”对象在调用预定义进程时不能下标

for chestCount in range (0,chestCount): 
    grid = randomise_Chests_Bandits ('0',xSize,ySize,grid,pX,pY) 
回溯(最近一次呼叫最后一次):
文件“E:\AQA游戏最终编码与帮助.py”,第271行,中
整体菜单()
文件“E:\AQA游戏最终编码与帮助.py”,第264行,在总菜单中
grid=添加_Chests_Bandits(grid、chestCount、banditCount、xSize、ySize、pX、pY)
文件“E:\AQA游戏最终编码与帮助.py”,第223行,inadd_Chests_Bandits
网格=随机化\u箱子\u土匪('0',x大小,y大小,网格,pX,pY)
文件“E:\AQA游戏最终编码与帮助.py”,第215行,在随机化的箱子里
如果(x==pX和y==pY)或(网格[x][y]!=”):
TypeError:“生成器”对象不可下标

这是我对你问题的解释:

Traceback (most recent call last):
    File "E:\AQA Game Final Coding With Help.py", line 271, in <module>
        Overall_Menu ()
    File "E:\AQA Game Final Coding With Help.py", line 264, in Overall_Menu
        grid = add_Chests_Bandits(grid,chestCount,banditCount,xSize,ySize,pX,pY)
    File "E:\AQA Game Final Coding With Help.py", line 223, inadd_Chests_Bandits
        grid = randomise_Chests_Bandits ('0',xSize,ySize,grid,pX,pY)
    File "E:\AQA Game Final Coding With Help.py", line 215, in randomise_Chests_Bandits
    if (x == pX and y == pY) or (grid[x][y] != " "):
TypeError: 'generator' object is not subscriptable
可能您忘记初始化数组,以下是输出:

def randomise_Chests_Bandits (sign,xSize,ySize,grid,pX,pY) :

    import random
    x = random.randint(0,xSize-1) #get a random x coordinate
    y = random.randint(0,ySize-1) #get a random y coordinate
    if (x == pX and y == pY) or (grid[x][y] != " "):
        grid = randomise_Chests_Bandits(sign,xSize,ySize,grid,pX,pY)
    else:
        grid[x][y] = sign

    return grid


chestCount = 10
grid = [[" "]*20]*20
for chestCount in range (0,chestCount):
    grid = randomise_Chests_Bandits ('0',20,20,grid,10,10)

print(grid)

您能否为异常添加完整的回溯以及初始输入?例如,
grid
是什么?看起来
grid
是一个生成器,但如果没有回溯,我无法确定。似乎@francesco是对的,您可能无法初始化网格,这就是为什么会出现错误。
[[' ', '0', '0', '0', ' ', '0', '0', '0', ' ', ' ', '0', ' ', '0', ' ', ' ', '0', ' ', ' ', '0', ' '], [' ', '0', '0', '0', ' ', '0', '0', '0', ' ', ' ', '0', ' ', '0', ' ', ' ', '0', ' ', ' ', '0', ' '], [' ', '0', '0', '0', ' ', '0', '0', '0', ' ', ' ', '0', ' ', '0', ' ', ' ', '0', ' ', ' ', '0', ' '], [' ', '0', '0', '0', ' ', '0', '0', '0', ' ', ' ', '0', ' ', '0', ' ', ' ', '0', ' ', ' ', '0', ' '], [' ', '0', '0', '0', ' ', '0', '0', '0', ' ', ' ', '0', ' ', '0', ' ', ' ', '0', ' ', ' ', '0', ' '], [' ', '0', '0', '0', ' ', '0', '0', '0', ' ', ' ', '0', ' ', '0', ' ', ' ', '0', ' ', ' ', '0', ' '], [' ', '0', '0', '0', ' ', '0', '0', '0', ' ', ' ', '0', ' ', '0', ' ', ' ', '0', ' ', ' ', '0', ' '], [' ', '0', '0', '0', ' ', '0', '0', '0', ' ', ' ', '0', ' ', '0', ' ', ' ', '0', ' ', ' ', '0', ' '], [' ', '0', '0', '0', ' ', '0', '0', '0', ' ', ' ', '0', ' ', '0', ' ', ' ', '0', ' ', ' ', '0', ' '], [' ', '0', '0', '0', ' ', '0', '0', '0', ' ', ' ', '0', ' ', '0', ' ', ' ', '0', ' ', ' ', '0', ' '], [' ', '0', '0', '0', ' ', '0', '0', '0', ' ', ' ', '0', ' ', '0', ' ', ' ', '0', ' ', ' ', '0', ' '], [' ', '0', '0', '0', ' ', '0', '0', '0', ' ', ' ', '0', ' ', '0', ' ', ' ', '0', ' ', ' ', '0', ' '], [' ', '0', '0', '0', ' ', '0', '0', '0', ' ', ' ', '0', ' ', '0', ' ', ' ', '0', ' ', ' ', '0', ' '], [' ', '0', '0', '0', ' ', '0', '0', '0', ' ', ' ', '0', ' ', '0', ' ', ' ', '0', ' ', ' ', '0', ' '], [' ', '0', '0', '0', ' ', '0', '0', '0', ' ', ' ', '0', ' ', '0', ' ', ' ', '0', ' ', ' ', '0', ' '], [' ', '0', '0', '0', ' ', '0', '0', '0', ' ', ' ', '0', ' ', '0', ' ', ' ', '0', ' ', ' ', '0', ' '], [' ', '0', '0', '0', ' ', '0', '0', '0', ' ', ' ', '0', ' ', '0', ' ', ' ', '0', ' ', ' ', '0', ' '], [' ', '0', '0', '0', ' ', '0', '0', '0', ' ', ' ', '0', ' ', '0', ' ', ' ', '0', ' ', ' ', '0', ' '], [' ', '0', '0', '0', ' ', '0', '0', '0', ' ', ' ', '0', ' ', '0', ' ', ' ', '0', ' ', ' ', '0', ' '], [' ', '0', '0', '0', ' ', '0', '0', '0', ' ', ' ', '0', ' ', '0', ' ', ' ', '0', ' ', ' ', '0', ' ']]