为了账号安全,请及时绑定邮箱和手机立即绑定

如何将网格作为函数返回?

如何将网格作为函数返回?

慕森王 2023-02-07 17:23:24
所以我有一个任务,我必须使用测试代码来检查我的代码是否正常工作,我试图做的是将网格定义为函数并返回它,以便测试代码可以使用它。测试代码:def run_test (test):    if test == 0:        grid = []         print(grid)           util.create_grid (grid)        # import from a different file        print (len (grid))        print (len (grid[0]))        print (len (grid[1]))        print (len (grid[2]))        print (len (grid[3]))        print (grid[0][0])        print (grid[1][2])        print (grid[2][1])        print (grid[3][3])我的代码(来自不同的文件):def create_grid(grid):    grid = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]    return grid我收到的错误是:print (len (grid[0])) IndexError: list index out of range
查看完整描述

3 回答

?
萧十郎

TA贡献1815条经验 获得超12个赞

问题是您忽略了以下的返回值create_grid

grid = util.create_grid(grid)

鉴于您grid在重新分配它之前从不使用,将任何对象作为参数传递会更简单(函数无论如何都会忽略它):

if test == 0:
    grid = util.create_grid([])


查看完整回答
反对 回复 2023-02-07
?
呼唤远方

TA贡献1856条经验 获得超11个赞

如果所有文件都在您的控制之下并且您可以修改它们,我会看到两个问题:

  1. 此方法中的参数grid从未使用过。它应该被删除

    def create_grid(grid):  
        grid = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]
            return grid
  2. 永远不会使用返回值。它应该是

     grid = util.create_grid()

如果你不能修改test_run(),因为那是失控的,你需要找到一种方法来修改数组而无需赋值。

在这种情况下,从

grid.clear()

以确保数组为空。之后使用添加值

grid.append()

或者

grif.extend()


查看完整回答
反对 回复 2023-02-07
?
繁花如伊

TA贡献2012条经验 获得超12个赞

在你的create_grid()功能中,grid变量只在函数的范围内,所以它只会在你的函数中编辑你的参数。


例子:


>>> grid = []

>>> def create_grid(grid):

...     grid = [1, 2, 3]

...

>>> create_grid(grid)

>>> print(grid)

[]

在这里你可以看到你的grid变量没有改变。


你应该做的是在你改变它之后返回你的网格(你已经这样做了)并将grid你的函数中的变量定义run_test()为函数的返回值,如下所示:


>>> grid = []

>>> def create_grid(grid):

...     grid = [1, 2, 3]

...     return grid

...

>>> grid = create_grid(grid)

>>> print(grid)

[1, 2, 3]

这里你的grid变量确实改变了。


请注意,在这里您不需要将网格作为参数传递,因为您无论如何都在函数中重新定义它。


所以你的代码应该是这样的:


def create_grid():

  grid = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]

  return grid

grid = util.create_grid()

如果您想了解有关范围的更多信息,请参阅此链接。


查看完整回答
反对 回复 2023-02-07
  • 3 回答
  • 0 关注
  • 76 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信