Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Uncategorized category for Geometry Figures by vvm70
from math import pi
class Parameters:
def __init__(self, param):
self.param = param
def choose_figure(self, figure):
self.figure = figure
def perimeter(self):
return round(self.figure.perimeter(self.param), 2)
def area(self):
return round(self.figure.area(self.param), 2)
def volume(self):
if isinstance(self.figure, Cube):
return round(self.figure.volume(self.param), 2)
else:
return 0
class Circle:
def perimeter(self, radius):
return 2 * radius * pi
def area(self, radius):
return radius**2 * pi
class Triangle:
def perimeter(self, side):
return 3 * side
def area(self, side):
return side**2 / 4 * 3**0.5
class Square:
def perimeter(self, side):
return 4 * side
def area(self, side):
return side**2
class Pentagon:
def perimeter(self, side):
return 5 * side
def area(self, side):
return side**2 / 4 * (25 + 10 * 5**0.5)**0.5
class Hexagon:
def perimeter(self, side):
return 6 * side
def area(self, side):
return 1.5 * side**2 * 3**0.5
class Cube:
def perimeter(self, side):
return 12 * side
def area(self, side):
return 6 * side**2
def volume(self, side):
return side**3
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
figure = Parameters(10)
figure.choose_figure(Circle())
assert figure.area() == 314.16
figure.choose_figure(Triangle())
assert figure.perimeter() == 30
figure.choose_figure(Square())
assert figure.area() == 100
figure.choose_figure(Pentagon())
assert figure.perimeter() == 50
figure.choose_figure(Hexagon())
assert figure.perimeter() == 60
figure.choose_figure(Cube())
assert figure.volume() == 1000
print("Coding complete? Let's try tests!")
May 11, 2021