Python UnboundLocalError:局部变量';设置文本';分配前参考
我不熟悉Python和一般的编码,我正在尝试编写一个程序,允许您使用turtle图形进行绘制,以下是我的代码:Python UnboundLocalError:局部变量';设置文本';分配前参考,python,Python,我不熟悉Python和一般的编码,我正在尝试编写一个程序,允许您使用turtle图形进行绘制,以下是我的代码: import turtle # Setup bot = turtle.Turtle() bot.speed(5) bot.color("black") x = 1 color = "black" speed = 5 length = 20 visibility = "true" inputText = '''Choose an option: A) Forward B) Backwa
import turtle
# Setup
bot = turtle.Turtle()
bot.speed(5)
bot.color("black")
x = 1
color = "black"
speed = 5
length = 20
visibility = "true"
inputText = '''Choose an option:
A) Forward
B) Backward
C) Left
D) Right
E) Settings
F) Exit
> '''
settingsText = "Choose a setting: \nA) Color: " + str(color) + "\nB) Speed: " + str(speed) + "\nC) Length: " + str(length) + "\nD) Visibility: " + str(visibility) + "\n> "
def main():
while x == 1:
mainMenu = input(inputText)
if mainMenu == "A":
bot.forward(length)
elif mainMenu == "B":
bot.backward(length)
elif mainMenu == "C":
bot.left(90)
elif mainMenu == "D":
bot.right(90)
elif mainMenu == "E":
while x == 1:
settingsMenu = input(settingsText)
global settingsText
if settingsMenu == "A":
color = input("What color should the bot write with?")
bot.color(color)
if settingsMenu == "B":
speed = input("How fast should the bot move?")
bot.speed(speed)
if settingsMenu == "C":
length = input("How far should the bot move each time?")
if settingsMenu == "D":
visibility = input("Should the bot be visible?")
if visibility == "true":
bot.showturtle()
if visibility == "false":
bot.hideturtle()
if settingsMenu == "E":
break
settingsText = "Choose a setting: \nA) Color: " + str(color) + "\nB) Speed: " + str(speed) + "\nC) Length: " + str(length) + "\nD) Visibility: " + str(visibility)
elif mainMenu == "F":
break
main()
当我当前运行它时,它显示UnboundLocalError:在赋值之前引用了局部变量“settingsText”。我该如何解决这个问题?我读过其他帖子,上面说如果变量已经被分配到其他地方或其他地方,就不能在局部范围内分配变量(什么是范围??)。但这毫无意义,我在开始时分配变量,然后在if循环结束时给它一个新的赋值,这样下次循环时它会说一些不同的话。任何帮助都将不胜感激
-Hero在使用变量之前,应调用
全局
:
global settingsText
settingsMenu = input(settingsText)
同样,您也会遇到类似
长度等变量的问题。问题似乎出在以下行:
settingsMenu = input(settingsText)
使用后,您正在声明全局设置文本。它将不起作用。您应该在使用全局变量之前声明它们,否则它将被视为局部变量
尝试在函数顶部将所有想要的变量设置为全局变量。这样,您将看到所有这些都在一起
另外,尽量不要使用全局变量。这被认为是不好的做法,在大多数情况下都有简单的解决办法。在语句settingsMenu=input(settingsText)
之前提到语句global settingsText
。这样,解释器就知道它必须在全局范围内使用该解释器。