# 第二大题:基于圆形类实现一个圆环类,要求接收参数 外圆半径和内圆半径
# 完成方法 :计算环形面积和环形周长(公式自己上网查)#Radius半径 Acreage面积
# 要求,借助组合,要求组合圆形类的对象完成需求 Circular Ring圆环 perimeter周长
from math import pi
class Circle:
def __init__(self,r):
self.r=r
def area(self):
return pi*self.r*self.r #必须要有返回值,方便在函数内部计算。
def perimeter(self):
return 2*pi*self.r #必须要有返回值,方便在函数内部计算。
class Ring:
def __init__(self,out_r,inner_r):
out_r,inner_r=(out_r,inner_r) if out_r>inner_r else (inner_r,out_r) #这段代码可解决传递的半径#大小的顺序问题。
self.out_c=Circle(out_r) #内部完成实例化,用户体验更好。
self.inner_c=Circle(inner_r)
def computes(self): #设计了一个计算方法,专门用于计算圆环的面积及周长,打印并返回值。
'return 圆环的面积,圆环的周长'
ringarea=self.out_c.area()-self.inner_c.area() #完成内部调用
print('圆环的面积是:',ringarea)
ringperimeter=self.out_c.perimeter()+self.inner_c.perimeter()
print('圆环的周长是:',ringperimeter)
return ringarea,ringperimeter
#def area(self): #另一种方式,没有用计算函数,而是分别用了面积和周长的方法。
#return self.out_c.area()-self.inner_c.area()
#def perimeter(self): #另一种方式,没有用计算函数,而是分别用了面积和周长的方法。
#return self.out_c.perimeter()+self.inner_c.perimeter()
ring=Ring(10,15) #当一段代码中同样的公式、方法要在多处用时,最好用组合,公式只写#一处,其它的都是引用。可减少代码量,代码有错时,只需修改一处就可以了。
ring.computes()