这是我的代码:
def Area():
area = pi * radius * radius
pi = 3.14
radius = diameter * 2
def cost():
diameter = eval(input("diamater: "))
print ("Area is", area)
cost()
它说区域未定义,但我有一个名为区域的变量!
这是我的代码:
def Area():
area = pi * radius * radius
pi = 3.14
radius = diameter * 2
def cost():
diameter = eval(input("diamater: "))
print ("Area is", area)
cost()
它说区域未定义,但我有一个名为区域的变量!
area
是函数中的局部变量,这意味着在该函数之外,您无法访问它。您应该阅读范围和功能。这里最好的解决方案是从你的函数返回值,并将参数传递给其他函数。
您似乎对代码的评估方式缺乏了解。代码作为一系列语句依次执行,一个接一个。变量只有在定义后才能使用。在Area()
中,您是在尝试使用变量后定义变量。这没有意义。
另请注意,这eval()
是从字符串中获取数字的不好方法(它很慢,不是为此目的而设计的,并且允许执行任意代码),请int()
改用。
另请注意,PEP-8建议保留CapWords
用于类,并使用lowercase_with_underscores
用于函数名称,因此Area()
可能应该是area()
. 这将有助于保持代码的一致性和可读性。
你应该:
Area()
退货 area
;_Area()
from cost()
,适当使用其结果。最后,内部语句的顺序Area()
看起来确实很奇怪。
变量被本地化到方法的范围内。如果要使用方法中的值,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
没有在任何地方定义。您的意图是将其传递给方法;我在这里提供了这个提示。