Python 如何消除赋值错误之前引用的局部变量?
我想做一个简单的程序,生成一个板,你可以在上面移动X。 代码:Python 如何消除赋值错误之前引用的局部变量?,python,python-2.7,Python,Python 2.7,我想做一个简单的程序,生成一个板,你可以在上面移动X。 代码: 每次我想让程序更改coordX或coordY的值时,我都会得到UnboundLocalError:在赋值之前引用局部变量coordY/coordX。我尝试了不同的方法——将变量设置为全局变量,在定义函数时为函数设置参数而不是使用变量,但什么都不起作用。一旦调用play,您就不会对coordX或coordY进行任何赋值,这就解释了为什么它们从未更改。粘贴的代码没有出现您所遇到的错误。你到底想把coordX和coordY分配到哪里?顺便
每次我想让程序更改coordX或coordY的值时,我都会得到UnboundLocalError:在赋值之前引用局部变量coordY/coordX。我尝试了不同的方法——将变量设置为全局变量,在定义函数时为函数设置参数而不是使用变量,但什么都不起作用。一旦调用
play
,您就不会对coordX
或coordY
进行任何赋值,这就解释了为什么它们从未更改。粘贴的代码没有出现您所遇到的错误。你到底想把coordX和coordY分配到哪里?顺便说一句,有关该错误的详细信息,请参阅我在上的帖子。当您从未尝试分配这些变量时,为什么要在函数中声明global coordY
和global coordX
?分配它们,这样您就可以清楚地看到发生了什么
from msvcrt import getch
import os
board = []
for x in range(20):
board.append(["O"] * 20)
def print_board(board):
for row in board:
print " ".join(row)
def keys(coordx, coordy):
global coordY
global coordX
key = ord(getch())
if key == 97:
coordx -= 1
elif key == 100:
coordx += 1
elif key == 115:
coordy -= 1
elif key == 119:
coordy += 1
def play(coordx, coordy):
global coordY
global coordX
while True:
board[coordx][coordy] = "X"
print_board(board)
keys(coordx, coordy)
os.system('cls')
coordX = 10
coordY = 10
play(coordX, coordY)