Python UnboundLocalError:局部变量';用户a';分配前参考

Python UnboundLocalError:局部变量';用户a';分配前参考,python,Python,我真的不知道如何使下面的代码工作。我得到一个例外: UnboundLocalError:赋值前引用了局部变量“u” 有人能帮我吗?我必须说明我是Python新手。 提前感谢。解决方案: 使用一些默认值作为参数: def if_statement(user_a='no selection'): user_choice = raw_input("Pick 1 or 2\n") if user_choice == "1": u = input("What would y

我真的不知道如何使下面的代码工作。我得到一个例外:

UnboundLocalError:赋值前引用了局部变量“u”

有人能帮我吗?我必须说明我是Python新手。 提前感谢。

解决方案:

使用一些默认值作为参数:

def if_statement(user_a='no selection'):
    user_choice = raw_input("Pick 1 or 2\n")
    if user_choice == "1":
        u = input("What would you like A to equal?\n")
        if_statement(user_a=u)
    elif user_choice == "2":
        print("A equals: " + user_a) 
        if_statement(user_a=user_a)

if_statement()
或者,您也可以像这样使用
global

user_a = "No selection"
def if_statement():
    global user_a # here is the trick ;-)
    user_choice = raw_input("Pick 1 or 2\n")
    if user_choice == "1":
        user_a = input("What would you like A to equal?\n")
        if_statement()
    elif user_choice == "2":
        print("A equals: " + user_a)
        if_statement()

if_statement()

它工作得非常完美——感谢阿加尼刚刚使用了print(“A等于:+user_A”),这在第二个版本中工作得很好。第一个选项可能不是最好的,因为在我的实际代码中,有许多不同的变量以及用户。最后,为什么要使用原始输入而不是输入如果您在python3上,原始输入变成了输入,但在python2上,它们都存在并且行为方式不同:
user_a = "No selection"
def if_statement():
    global user_a # here is the trick ;-)
    user_choice = raw_input("Pick 1 or 2\n")
    if user_choice == "1":
        user_a = input("What would you like A to equal?\n")
        if_statement()
    elif user_choice == "2":
        print("A equals: " + user_a)
        if_statement()

if_statement()