【问题标题】:UnboundLocalError: local variable 'count' referenced before assignmentUnboundLocalError:分配前引用的局部变量“计数”
【发布时间】:2017-12-23 21:36:16
【问题描述】:

在“count+=1”处抛出错误。我尝试将其设为全球等,但它仍然存在问题。这更像是一个笑话,但我想知道为什么它不起作用。

import math
def delT():
    #inputs
    #float inputs
    #do math
    #print results
    global count
    count=0
    def getAndValidateNext():
        #print menu
        getNext=input("select something")
        acceptNext=["things","that","work"]
        while getNext not in acceptNext:
            count+=1
            print("Not a listed option.")
            if count==5:
                print("get good.")
                return
            return(getAndVadlidateNext())
        if getNext in nextRestart:
            print()
            return(delT())
        if getNext in nextExit:
            return
    getAndVadlidateNext()
delT()

【问题讨论】:

  • 请完整回溯。如果我的眼睛看对了,则不会调用该函数...
  • getAndVadlidateNext 是什么?
  • 您的帖子中有很多错别字!你是在这里从头开始输入的吗?不能复制/粘贴吗?即,您的函数被定义为 getAndValidateInput 但您将其(我希望)称为 getAndVadlidateNext!
  • 由于我的工作而注释掉了部分。 getAndValidateNext 是正确的函数名称,固定后。抱歉打错了,我刚刚注册了帐户,之前没有发布过,所以起初使用 ctrl+k 等格式很奇怪。所以是的,我是在前半部分写出来的。问题已解决,但

标签: python


【解决方案1】:

我曾经遇到过同样的问题,结果证明它与范围有关,并且在另一个函数定义中有一个函数定义。有效的是编写单独的函数来创建和修改全局变量。比如这样:

def setcount(x):
    global count
    count = x
def upcount():
    global count
    count += 1

【讨论】:

    【解决方案2】:

    您需要将 global 关键字下移到您的函数中。

    count=0
    def getAndValidateInput():
        global count
        #print menu
        #So on and so forth
    

    现在您应该可以访问您的计数变量了。它与 Python 中的作用域有关。您必须在要使用它的每个函数中声明一个变量是全局的,而不仅仅是定义它的位置。

    【讨论】:

    • 啊,呵呵。我刚刚添加了它,它工作正常。必须在 getAndValidateNext 中将其声明为全局变量,并将其声明为全局变量,我将其定义为 0。已解决,谢谢!
    【解决方案3】:

    global count 应该在 getAndValidateInput() 函数内。

    【讨论】:

      猜你喜欢
      • 2017-08-10
      • 2020-01-16
      • 2019-12-05
      • 2017-09-19
      • 2020-09-26
      • 2022-01-02
      • 2019-03-22
      • 2019-01-24
      • 2021-07-01
      相关资源
      最近更新 更多