Python:变量未定义,不确定如何在不同的defs上携带变量

时间:2014-11-02 02:24:01

标签: python python-3.4

我正在尝试使用另一个函数的变量,但我不确定如何访问它。我不知道在哪里放global,如果有必要的话。

这是我到目前为止所做的:

#Defs
def getAngle1():
    angle1 = eval(input("Please enter the first angle: "))
    return angle1
def getAngle2():
    angle2 = eval(input("Please enter the second angle: "))
    return angle2
def getAngle3():
    angle3 = eval(input("Please enter the third angle: "))
    return angle3
def main():
    getAngle1()
    getAngle2()
    getAngle3()
    if angle1 == 90:
        print ("This is a right triangle!")
    elif angle2 == 90:
        print ("This is a right triangle!")
    elif angle3 == 90:
        print ("This is a right triangle!")
    else:
        print ("This is not a right triangle.")
#Driver
main()

我收到此错误:

Traceback (most recent call last):
  File "C:/Documents and Settings/user1/My Documents/AZ_isitRightRevised.py", line 29, in <module>
    main()
  File "C:/Documents and Settings/user1/My Documents/AZ_isitRightRevised.py", line 20, in main
    if angle1 == 90:
NameError: name 'angle1' is not defined

1 个答案:

答案 0 :(得分:3)

问题是getAngles代码块在return angle1之后停止执行。此外,只需调用getAngles(),您就不会将此函数返回的值存储在任何位置。

首先,让我们将getAngles重写为:

def getAngles():
    a1 = int(input("Please enter the first angle:"))
    a2 = int(input("Please enter the second angle:"))
    a3 = int(input("Please enter the third angle:"))
    return (a1, a2, a3)

现在,在main中,您可以执行以下操作:

def main():
    angles = getAngles()
    # rest of your code
    # angles[0] is the first angle
    # angles[1] is the second angle
    # angles[2] is the third angle

现在,您可以访问所有三个角度。你可以做的是:

if 90 in angles:    # if it's a right triangle
    print("This is a right triangle!")
else:                  # otherwise...
    print("This is not a right triangle.")