对于网格python,整数不会附加到我的数组中

2024-10-03 04:31:08 发布

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

最近在学校的一个项目中,我做了一个“寻宝”游戏,玩家可以在python的网格上找到宝藏和强盗。我有一个办法,使网格在一个固定的大小,但作为一个额外的一点,他们要求我们能够改变网格的大小,数量的胸部和数量的强盗

这是我的网格生成器的代码,但它不会生成“网格”数组,但它会生成“playergrid”:

def gridmaker(gridsize, debug):
     global grid
     global playergrid
     gridinator = 1
     grid = [[0]]
     playergrid = [[" "]]
     if debug == 1:
       while gridinator <= gridsize:
         grid[gridinator].append(0)
         gridinator = gridinator + 1
       gridinator = 1
     else:
       while gridinator <= gridsize:
         playergrid[0].append(gridinator)
         gridinator = gridinator + 1
       gridinator = 1
     while gridinator <= gridsize:
       if debug == 1:
         grid.append([0])
         for i in range(gridsize):
           grid[gridinator].append(0)
       else:
         playergrid.append([gridinator])
         for i in range(gridsize):
           playergrid[gridinator].append("#")
       gridinator = gridinator+1
     if debug == 1:
       grid[1][1] = 1
     else:
       playergrid[1][1] = "P"

    gridmaker(9, 1)

    for row in grid:
      print(" ".join(map(str,row)))

抱歉,如果它的格式不同,因为有2个空格选项卡而不是4个,它在repl.it上工作得最好

print(grid)应返回如下网格:

0 0 0 0 0 0 0 0 0
0 1 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

请告诉我, 谢谢


Tags: indebug网格for数量ifelsegrid
1条回答
网友
1楼 · 发布于 2024-10-03 04:31:08

你必须记住列表是0索引的

这意味着要访问grid列表的第一个元素,您将使用索引0

使用grid = [[0]]可以创建一个包含一个项目的列表(可以使用grid[0]获得该项目),该列表的第一个项目(grid[0][0])是0

但是你的gridinator的起始值是1。因此,当您的第一个append运行时:

grid[gridinator].append(0)

它试图访问grid的第二个元素:

grid[1].append(0)

这给了你一个IndexError因为,正如回溯应该告诉你的那样*list index out of range

你可以自己试试:

grid = [[0]]
grid[0]
grid[1]

其中一个解决方案可以是从0开始gridinator,并在这里使用严格的less而不是less或equal:gridinator <= gridsize(因为grid[8]给出了grid的第9个元素)

*请记住在将来包含错误的回溯。他们真的帮助你自己和帮助你的人

让我知道这是否有帮助,或者我是否应该找到另一种方式来解释它

相关问题 更多 >