Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
@rounded, @staticmethod, @classmethod solution in Clear category for Geometry Figures by flpo
import math
def rounded(f): return lambda x: round(f(x), 2)
class Parameters:
def __init__(self, par):
self.par = par
def choose_figure(self, figure):
self.figure = figure
@rounded
def area(self):
return self.figure.area(self.par)
@rounded
def perimeter(self):
return self.figure.perimeter(self.par)
@rounded
def volume(self):
return self.figure.volume(self.par)
class Figure2D:
def volume(*_): return 0
class Circle(Figure2D):
@staticmethod
def area(par):
return math.pi * par ** 2
@staticmethod
def perimeter(par):
return math.pi * par * 2
class RegularPoly(Figure2D):
@classmethod
def perimeter(cls, par):
return cls.nsides * par
@classmethod
def area(cls, par):
return cls.nsides * par ** 2 / (4 * math.tan(math.pi / cls.nsides))
class Triangle(RegularPoly): nsides = 3
class Square(RegularPoly): nsides = 4
class Pentagon(RegularPoly): nsides = 5
class Hexagon(RegularPoly): nsides = 6
class Cube:
@staticmethod
def perimeter(par):
return par * 12
@staticmethod
def area(par):
return par ** 2 * 6
@staticmethod
def volume(par):
return par ** 3
June 23, 2018
Comments: