这这里是我的代码:如何使用其他功能的变量?
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()
从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
不被任何定义。你的意图是把它传递给方法;我在这里提供了这个提示。
呃,不应该是'diameter = radius * 2'吗? (或者'radius = float(diameter)/ 2') – Marius
我们怎样才能证明'eval(input(..))'是一件好事?第二个是 –