Professional Documents
Culture Documents
class GeometricObject:
def __init__(self, name = "un known",
shape = "un known",
color = "black",
filled = False):
self.__name = name
self.__shape = shape
self.__color = color
self.__filled = filled
def getName(self):
return self.__name
def getShape(self):
return self.__shape
def getColor(self):
return self.__color
def getFilled(self):
return self.__filled
def isFilled(self):
return self.__filled
def __str__(self):
return (f"name: {self.__name} "
f"shape: {self.__shape} "
f"\t\t color: {self.__color}, filled:
{self.__filled}")
class Polygon(GeometricObject):
def __init__(self,
name="un known",
shape="un known",
numberOfSides=0,
color="black",
filled=False):
if numberOfSides <= 2:
raise ValueError(f"name: {name}, shape:
{shape}, numberOfSides = {numberOfSides} must be > 2")
self.__numberOfSides = numberOfSides
super().__init__(name, shape, color, filled)
def getNumberOfSides(self):
return (self.__numberOfSides)
def __str__(self):
return f"{super().__str__()}, numberOfSides:
{self.getNumberOfSides()}"
import math
from polygon import Polygon
class Triangle(Polygon):
def __init__(self, a=5, b=4, c=3,
color="Black", filled=False, name="no-
name"):
if a <= 0 or b <= 0 or c <= 0:
raise ValueError(f"all sides must be > 0, a:
{a}, b: {b}, c: {c}")
l = [a, b, c]
l.sort()
self.__side1 = l[0]
self.__side2 = l[1]
self.__side3 = l[2]
super().__init__(name=name,
shape="triangle",
numberOfSides=3,
color=color,
filled=filled)
def isEquilateral(self):
if self.__side1 == self.__side2 and self.__side2
== self.__side3 and self.__side1 == self.__side3:
return True
else:
return False
def isIsosceles(self):
if self.__side1 == self.__side2 or self.__side2
== self.__side3 or self.__side1 == self.__side3:
return True
else:
return False
def isRightAngled(self):
s1_sqaure = self.__side1 * self.__side1
s2_sqaure = self.__side2 * self.__side2
s3_sqaure = self.__side3 ** 2 # or self.__side3
* self.__side3
def getSide1(self):
return self.__side1
def getSide2(self):
return self.__side2
def getSide3(self):
return self.__side3
def getArea(self):
s = (self.__side1 + self.__side2 +
self.__side3) / 2
area = math.sqrt(
s * (s - self.__side1) * \
(s - self.__side2) * (s - self.__side3))
return area
def getPerimeter(self):
return self.__side1 + self.__side2 + self.__side3
def __str__(self):
return (f"{super().__str__()}\n side1:
{self.__side1}, side2: {self.__side2}, side3:
{self.__side3},\n"
f" area: {self.getArea()}, perimeter:
{self.getPerimeter()}\n"
f" isEquilateral: {self.isEquilateral()}\
b isIsosceles: {self.isIsosceles()}\b isRightAngled:
{self.isRightAngled()}")
try:
l.append(Triangle(name="triangle 3",
a=3.5, b=4.5, c=8,
color="green", filled=True))
except ValueError as e:
outfile.write(str(e))
try:
l.append(Triangle(name="triangle 1"))
except ValueError as e:
outfile.write(str(e))
try:
l.append(Triangle(name="triangle 2", a=3, b=3,
c=3))
except ValueError as e:
outfile.write(str(e))
try:
l.append(Triangle(name="triangle 5", a=2, b=3,
c=3))
except ValueError as e:
outfile.write(str(e))
try:
l.append(Triangle(name="triangle 4", a=7, b=5,
c=4,
color="Red", filled=True))
except ValueError as e:
outfile.write(str(e))
try:
l.append(Triangle(name="triangle 6", a=1, b=2,
c=3,
color="Yellow", filled=True))
except ValueError as e:
outfile.write(str(e))
try:
l.append(Polygon(name="polygon 2",
numberOfSides=4,
shape="square",
color="Purple",
filled=True))
except ValueError as e:
outfile.write(str(e))
try:
l.append(Polygon(name="polygon 1"))
except ValueError as e:
outfile.write(str(e))
try:
l.append(GeometricObject(name="z_geometric object
1",
filled=True,
color="blue",
shape="circle"))
except ValueError as e:
outfile.write(str(e))
outfile.write(
"\n\nlist of correct geometric objects\n"
+ " sorted by shape (primary sort)\n"
+ " and name (secondary sort):\n")
for o in l:
o.writeObject(outfile)
outfile.write("\n")
outfile.close()