【问题标题】:"UnboundLocalError: local variable 'option2' referenced before assignment"“UnboundLocalError:分配前引用了局部变量‘option2’”
【发布时间】:2020-08-13 03:08:48
【问题描述】:

我对编码还很陌生,我遇到了这个错误(如上所示): 错误发生在相反的变量上。例如,当我输入 1 时,我收到选项 2 的错误消息,当我输入 2 时,我收到选项 1 的错误消息

def one():
    choice = int(input ()) #the values should be between 1 and 2
    if choice == 1:
        print ("ok")
    else:
        print ("nice")
    return choice


def two(choice):
    if choice == 1:
        option1 = ("hello")
    else:
        option2 = ("thanks")
    return option1, option2

def three(option1, option2, choice):
    if choice ==1:
        print (option1)
    else:
        print (option2)

choice = one()
option1, option2 = two(choice)
three(choice, option1, option2)

任何帮助将不胜感激:)谢谢

【问题讨论】:

  • 你要么进入 if 要么进入 else。所以你最终要么声明 option1 要么声明 option2。
  • 在函数two中,你需要在返回它们之前同时声明option1option2,因为使用if else只会定义其中一个
  • def two(choice): option1 = "", option2 = ""
  • ....除此之外,绝对不需要第三种方法。你在第二个本身做同样的事情。
  • 嗨,这不是我正在创建的实际代码。它只是我可以用作示例的复制品。在实际代码中,它用于第三个功能(用于学校作业)谢谢:)

标签: python variables return


【解决方案1】:

您的问题在于 two() 的函数定义

这里只有 option1 或 option2 被初始化,但您将两者都传递给返回。 所以如果选择 == 1 那么 option1 = "hello" 和 option2 将不会被初始化。 因此,如果您想通过两者,则可以执行以下操作:

 def two(choice):
    option1 = option2 = ""
    if choice == 1:             
        option1 = ("hello")    
    else:
        option2 = ("thanks")
    return option1, option2

它将它们声明为空字符串,然后只有正确的选择才能通过 if 条件进行更改

【讨论】:

  • 非常感谢,非常感谢!
  • 如果您觉得有用,请接受答案:)
  • 对不起,我是新人。我该怎么做:3 nvm 知道了 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-10
  • 2020-01-16
  • 2019-12-05
  • 2017-09-19
  • 2020-09-26
  • 2022-01-02
  • 2019-03-22
相关资源
最近更新 更多