Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 关于更新名单_Python_Python 2.7 - Fatal编程技术网

Python 关于更新名单

Python 关于更新名单,python,python-2.7,Python,Python 2.7,我正在尝试更新一个二维列表,用于跟踪控制台游戏中的某个阶段。我使用以下代码进行更新: def updateBoard(): stage[bird[0]][3] = "#" #print(bird) Debugging #print(stage) Debugging 这段代码用于在新更新时刷新板: def flushBoard(): stage = 0 stage = [[0 for x in range(8)] for y in range(8)]

我正在尝试更新一个二维列表,用于跟踪控制台游戏中的某个阶段。我使用以下代码进行更新:

def updateBoard():
    stage[bird[0]][3] = "#"
    #print(bird) Debugging
    #print(stage) Debugging
这段代码用于在新更新时刷新板:

def flushBoard():
    stage = 0
    stage = [[0 for x in range(8)] for y in range(8)]
    #print(stage) Debugging
用于打印电路板的代码段如下所示:

def printBoard():

    for row in stage:
        for square in row:
            print(square, end="")
        print("")
    print("")
    print(stage)

我遇到的问题是,在刷新然后更新之后,我在新的位置上得到了“bird”,但我在前一个位置也得到了它,即使在刷新列表之后。有什么原因吗?注意:stage是在文件顶部声明的全局变量,而函数在while循环中以正确的顺序运行。(刷新、更新、打印)注意:我使用future获得正确的打印功能。

如果
stage
是一个全局变量,则必须使用
global
关键字。现在,您只是在
flushBoard
函数的范围内声明并创建一个新的
stage

def flushBoard():
    global stage  # use globally defined stage in this function
    stage = [[0 for x in range(8)] for y in range(8)]
在其他方法中,只要访问或修改
stage
,就不需要
global

话虽如此,您也可以使用
[:]
切片表示法修改列表,用新值替换整个内容。这样,您就不需要
global

def flushBoard():
    stage[:] = [[0 for x in range(8)] for y in range(8)]

如果
stage
是全局变量,则必须使用
global
关键字。现在,您只是在
flushBoard
函数的范围内声明并创建一个新的
stage

def flushBoard():
    global stage  # use globally defined stage in this function
    stage = [[0 for x in range(8)] for y in range(8)]
在其他方法中,只要访问或修改
stage
,就不需要
global

话虽如此,您也可以使用
[:]
切片表示法修改列表,用新值替换整个内容。这样,您就不需要
global

def flushBoard():
    stage[:] = [[0 for x in range(8)] for y in range(8)]

我认为在flushBoard中,您使用的是本地舞台,而不是全局舞台。这就是使用赋值时发生的情况。你应该做:

def flushBoard():
    global stage
    stage = 0
    stage = [[0 for x in range(8)] for y in range(8)]
    #print(stage) Debugging

我建议阅读

我认为在flushBoard中,您使用的是本地舞台,而不是全局舞台。这就是使用赋值时发生的情况。你应该做:

def flushBoard():
    global stage
    stage = 0
    stage = [[0 for x in range(8)] for y in range(8)]
    #print(stage) Debugging

我建议阅读

那些不是python文档,我的朋友,这些是:那些不是python文档,我的朋友,这些是: