1

这是我的代码:

def Area():
    area = pi * radius * radius
    pi = 3.14
    radius = diameter * 2

def cost():
    diameter = eval(input("diamater: "))
    print ("Area is", area)
cost()

它说区域未定义,但我有一个名为区域的变量!

4

4 回答 4

6

area是函数中的局部变量,这意味着在该函数之外,您无法访问它。您应该阅读范围和功能。这里最好的解决方案是从你的函数返回值,并将参数传递给其他函数。

您似乎对代码的评估方式缺乏了解。代码作为一系列语句依次执行,一个接一个。变量只有在定义后才能使用。在Area()中,您是在尝试使用变量后定义变量。这没有意义。

另请注意,这eval()是从字符串中获取数字的不好方法(它很慢,不是为此目的而设计的,并且允许执行任意代码),请int()改用。

另请注意,PEP-8建议保留CapWords用于类,并使用lowercase_with_underscores用于函数名称,因此Area()可能应该是area(). 这将有助于保持代码的一致性和可读性。

于 2012-11-07T00:11:57.250 回答
0

我建议看看这门课程https://class.coursera.org/programming1-2012-001/class/index

于 2012-11-07T00:22:41.963 回答
0

你应该:

  1. Area() 退货 area;_
  2. 调用Area()from cost(),适当使用其结果。

最后,内部语句的顺序Area()看起来确实很奇怪。

于 2012-11-07T00:12:40.820 回答
0

变量被本地化到方法的范围内。如果要使用方法中的值,return它:

def area(diameter=1):
    pi = 3.14
    radius = diameter * 2
    area = pi * radius * radius
    return area

# Calling the value
def cost():
    diameter = eval(input("diamater: "))
    print ("Area is", area(diameter))

还值得一提的是,在您的原始代码中:

  • diameter没有在任何地方定义。您的意图是将其传递给方法;我在这里提供了这个提示。
  • 您的变量顺序不正确。它们必须在使用声明。
于 2012-11-07T00:13:23.370 回答