3 回答

TA貢獻1815條經驗 獲得超13個贊
問題是您忽略了以下的返回值create_grid
:
grid = util.create_grid(grid)
鑒于您grid
在重新分配它之前從不使用,將任何對象作為參數傳遞會更簡單(函數無論如何都會忽略它):
if test == 0: grid = util.create_grid([])

TA貢獻1856條經驗 獲得超11個贊
如果所有文件都在您的控制之下并且您可以修改它們,我會看到兩個問題:
此方法中的參數
grid
從未使用過。它應該被刪除def create_grid(grid): grid = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] return grid
永遠不會使用返回值。它應該是
grid = util.create_grid()
如果你不能修改test_run()
,因為那是失控的,你需要找到一種方法來修改數組而無需賦值。
在這種情況下,從
grid.clear()
以確保數組為空。之后使用添加值
grid.append()
或者
grif.extend()

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()
如果您想了解有關范圍的更多信息,請參閱此鏈接。
添加回答
舉報