UnboundLocalError:局部变量' sqrt'在分配之前引用

时间:2017-06-19 23:21:27

标签: python python-3.x

我们的代码允许我们输入一个数字,但是不能让我们找到它的平方根。代码只允许我们平方根完美正方形,还是其他东西。这是代码:

elif a == "Square" or a == "Square please":
    print("Please enter a number:")
    num1 = int(input())
    print("Your answer is:")
    answer = sqrt(num1)
    print(answer)

这是错误: 你想要平方的数字是多少?:25

显示空白但未回答。

在if语句后面添加数学导入sqrt后,会显示此错误。

Traceback (most recent call last):
  File "python", line 236, in <module>
  File "python", line 103, in personality
UnboundLocalError: local variable 'sqrt' referenced before assignment

以下是我可以向您展示的所有内容,同时不会影响我正在进行的项目的机密性。

elif a == "Square" or a == "Square please":
    from math import sqrt    
    print("Please enter a number:")
    num1 = int(input())
    print("Your answer is:")
    answer = sqrt(num1)
    print(answer)

3 个答案:

答案 0 :(得分:3)

您需要使用sqrt模块中的math功能。在文件的顶部执行以下操作:

from math import sqrt

或者,使用**运算符:

answer = num1 ** 0.5

答案 1 :(得分:0)

导入应放在文件的开头。

from math import sqrt

elif a == "Square" or a == "Square please":
    num1 = int(input("Please enter a number: "))
    print("Your answer is: {}".format(sqrt(num1))

sqrt适用于intfloat

答案 2 :(得分:0)

回复您最新的修改

UnboundLocalError指的是函数后面的某个地方,你在名为sqrt的函数中定义了变量。您必须为从sqrt导入的math选择其他名称:

from math import sqrt as SquareRoot
# answer = SquareRoot(9)

或者更改名为sqrt的函数中的其他变量(您没有告诉我们,所以我可以确定它在哪里)。

我怀疑在您的实际代码中,您做了类似的事情:

def myfunc():
    from math import sqrt    
    print("Please enter a number:")
    num1 = int(input())
    print("Your answer is:")
    answer = sqrt(num1)
    print(answer)
    sqrt = 100 # something else

    # ^ that is what actually is causing the error

另一种可能性是,在您的实际代码中,answer变量不存在,而是将其命名为sqrt