【问题标题】:Integers wont append to my array for grid - python整数不会附加到我的网格数组 - python
【发布时间】:2019-06-21 14:14:25
【问题描述】:

最近,为了一个学校项目,我一直在进行“寻宝”,玩家可以在 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

请告诉我, 谢谢!

【问题讨论】:

    标签: python arrays python-3.x grid append


    【解决方案1】:

    您必须记住列表是 0 索引的。

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

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

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

    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 &lt;= gridsize(因为 grid[8] 为您提供了网格的第 9 个元素)。

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

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

    【讨论】:

      猜你喜欢
      • 2022-01-02
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 1970-01-01
      相关资源
      最近更新 更多