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