在赋值之前引用的局部变量'a'

时间:2015-05-05 16:39:23

标签: python

我的作业要求我创建一个包含2个功能的模块。用户输入三角形的3个边,这两个函数将检查(a)输入是否有效以及(b)三角形的面积是多少。

 def isValid(s1,s2,s3):

    if (s1 + s2<=s3):
         print("Input is invalid.")
    else:
         area(s1,s2,s3)


 def area(s1,s2,s3):
     p = (s1+s2+s3)/2
     a = (p*(p-a)*(p-b)*(p-c))**(.5)
     print("The area of the triangle is: ",a)


s1 = eval(input("input s1: "))
s2 = eval(input("input s2: "))
s3 = eval(input("input s3: "))

isValid(s1,s2,s3)

我在分配之前收到错误:UnboundLocalError: local variable 'a' referenced

不知道从哪里开始,有点困惑。任何帮助,将不胜感激。

2 个答案:

答案 0 :(得分:1)

在计算区域(再次存储在变量a中)时,您正在使用变量bca而未定义它们:

a = (p*(p-a)*(p-b)*(p-c))**(.5)

也许你想在这里使用s1s2s3

a = (p * (p - s1) * (p - s2) * (p - s3)) ** .5

答案 1 :(得分:0)

更改功能

 def area(s1,s2,s3):
     p = (s1+s2+s3)/2
     a = (p*(p-a)*(p-b)*(p-c))**(.5)
     print("The area of the triangle is: ",a)

def area(s1,s2,s3):
    p = (s1+s2+s3)/2
    a = (p*(p-s1)*(p-s2)*(p-s3))**(.5)
    print("The area of the triangle is: ",a)