Python 如何修复UnboundLocalError
我正在用python制作一个游戏,出现以下错误: UnboundLocalError:赋值前引用的局部变量“playerY” 代码是:Python 如何修复UnboundLocalError,python,Python,我正在用python制作一个游戏,出现以下错误: UnboundLocalError:赋值前引用的局部变量“playerY” 代码是: import voyager200librarys playerY = 1 playerX = 0 amountOfRows = 3 command = voyager200librarys.menu ("P Y C R A F T", ["Play", "Quit"]) if (command
import voyager200librarys
playerY = 1
playerX = 0
amountOfRows = 3
command = voyager200librarys.menu ("P Y C R A F T", ["Play", "Quit"])
if (command == "Play"):
world = [0,0,0,0,-1,0,1,1,1]
def printWorld ():
index = 0
indexCheck = 0
for x in range(len (world)):
voyager200librarys.printWithoutNewLine (" ")
if (world [index] == 0):
voyager200librarys.printWithoutNewLine (" ")
if (world [index] == 1):
voyager200librarys.printWithoutNewLine ("D")
if (world [index] == -1):
voyager200librarys.printWithoutNewLine ("&")
indexCheck += 1
if (indexCheck == 3):
print ("")
indexCheck = 0
index += 1
def mainMenu ():
print ("")
whatToDo = voyager200librarys.menu ("What To Do?", ["Move"])
if (whatToDo == "Move"):
movementControls ()
def movementControls ():
print ("")
print ("Movement Controls:")
print ("< > Ʌ")
print ("")
print ("| | |")
print ("V V V")
print ("")
print ("1 2 3")
print ("")
command = input ("Plase Pick An Option: ")
command = int (command)
if (command != 1):
if (command != 2):
if (command != 3):
print ("Plase Pick A Valid Option Next Time.")
if (command == 1):
world [playerY * amountOfRows + playerX] = 0 #(The problem occurs here)
playerX -= 1
if (command == 2):
world [playerY * amountOfRows + playerX] = 0
playerX += 1
if (command == 3):
world [playerY * amountOfRows + playerX] = 0
playerY -= 0
while (True):
printWorld()
mainMenu()
world [playerY * amountOfRows + playerX] = -1
导入旅行者200图书馆
playerY=1
playerX=0
数量=3
command=voyager200librarys.menu(“py C R A F T”、[“播放”、“退出”])
如果(命令==“播放”):
世界=[0,0,0,0,-1,0,1,1,1]
def printWorld():
索引=0
indexCheck=0
对于范围内的x(len(世界)):
voyager200librarys.print不带换行符(“”)
如果(世界[索引]==0):
voyager200librarys.print不带换行符(“”)
如果(世界[索引]==1):
Voyager200Library S.print不带换行符(“D”)
如果(世界[索引]=-1):
voyager200librarys.print不带换行符(&)
indexCheck+=1
如果(indexCheck==3):
打印(“”)
indexCheck=0
指数+=1
def主菜单():
打印(“”)
whatToDo=voyager200librarys.menu(“要做什么?”,[“移动”])
如果(whatToDo==“移动”):
移动控件()
def movementControls():
打印(“”)
打印(“移动控制:”)
打印(“<>Ʌ”)
打印(“”)
打印(“| | |”)
打印(“V”)
打印(“”)
打印(“1 2 3”)
打印(“”)
命令=输入(“请选择一个选项:”)
command=int(命令)
如果(命令!=1):
如果(命令!=2):
如果(命令!=3):
打印(“请下次选择有效选项。”)
如果(命令==1):
世界[playerY*amountOfRows+playerX]=0#(问题发生在这里)
playerX-=1
如果(命令==2):
世界[playerY*amountOfRows+playerX]=0
playerX+=1
如果(命令==3):
世界[playerY*amountOfRows+playerX]=0
playerY-=0
虽然(正确):
printWorld()
主菜单()
世界[playerY*amountOfRows+playerX]=-1
我试着换了“playerX”和“playerY”,但都没能解决这个问题!顺便说一句,这个游戏本身就是一个模仿雷霆战机的游戏,如果你遗漏了任何信息,请询问我
如果有人有答案,请帮助
顺便说一句,快速回答就好了。
另外,它是python。错误涉及“局部变量‘playerY’”;这应该给你一个线索。如果你要给函数中的一个全局变量赋值,那么你必须通过在函数开头添加
global playerX,playerY
来声明。顺便说一句,说“快速回答就好了”只会让人生气。如果有人要回答,他们不会说“我想我会等4个小时再回答。”