我已经尝试了所有的方法,我的代码看起来非常接近,但是当我定义变量时,我仍然会得到一个名称错误。
from math import *
class Spheres:
def __init__(self, radius):
self.radius = r
self.area = 0
self.volume = 0
def getRadius(self):
return self.radius
def surfaceArea(self):
self.area = 4 * 3.14 * (r*r)
return (self.area)
def getVolume(self):
self.volume = (4/3) * 3.14 * (r * r * r)
return (self.volume)
def main():
r = input("Enter the radius of the sphere: ")
s = Spheres(r)
print("The volume of the sphere is: ", s.surfaceArea())
print("The surface area of the sphere is: ", s.volume())
if __name__ == '__main__':
main()
我得到的错误消息是:
Traceback (most recent call last):
File "/local/files/jfult001/CSC221/lab10/9ball.py", line 30, in <module> main()
File "/local/files/jfult001/CSC221/lab10/9ball.py", line 26, in main print("The volume of the sphere is: ", s.surfaceArea())
File "/local/files/jfult001/CSC221/lab10/9ball.py", line 15, in surfaceArea self.area = 4 * 3.14 * (r*r)
NameError: global name 'r' is not defined
让我告诉你关于范围:
在Python中,变量的作用域是,或者限制为它们在其中定义的代码。以下面的代码为例:
这将给您一个
NameError
,因为r
是^{本地的^{到my_function()
,并且不存在于my_function()
之外。同样地:
这段代码还将为您提供一个
NameError
,因为r
仅在__init__()
的范围内定义。但是请注意,在上面的示例中,您有
self.radius = r
。恰好self
可以在和函数中访问。r
的值存储在self.radius
中,用于从同一类中的其他函数中访问它。以下面的修改为例:此代码将顺利运行和返回
1234
,即r
的值。看起来“r”是作为字符串输入的。
我会写r=float(输入(“Enter radius:”)
在上面的函数中,将所有r更改为
self.radius
,因为self.radius
是类的对应属性,而不是r。。。此外,您的
__init__
中也有一些小错误,请按如下方式更正您的类:相关问题 更多 >
编程相关推荐