# -*- coding: utf-8 -*- """ Created on Wed Dec 5 15:31:30 2018 @author: Angelo """ def s(): return 5 class punto2d(): def __init__(self, x=0, y=0): self.x = x self.y = y def __str__(self): return "({},{})".format(self.x,self.y) def __repr__(self): return self.__str__() def distanza_origine(self): s = self.x**2 + self.y**2 return s**0.5 def distanza(self, p): s = (self.x -p.x)**2 + (self.y - p.y)**2 return s**0.5 class triangolo(): def __init__(self, p1, p2, p3): if not isinstance(p1, punto2d) or\ not isinstance(p2, punto2d) or\ not isinstance(p3, punto2d): raise TypeError('I parametri non sono di tipo punto2d') self.vertici = [p1,p2,p3] def __str__(self): #return "{}-{}-{}".format(p1,p2,p3) return "".join(map(str,self.vertici)) def perimetro(self): p1, p2, p3 = self.vertici try: return sum([p1.distanza(p3), p1.distanza(p2), p2.distanza(p3)]) except AttributeError: print("Non sono sicuro che ho dei punti2d") class poligono(): def __init__(self, vertici): for p in vertici: if not isinstance(p, punto2d): raise TypeError ("La lista non ha solo punto2d") self.vertici = vertici def perimetro(self): perim = 0 # for i,p in enumerate(self.vertici): # perim += p.distanza(self.vertici[i+1%len(self.vertici)]) # return perim for i,p in enumerate(self.vertici[:-1]): perim += p.distanza(self.vertici[i+1]) return perim + self.vertici[-1].distanza(self.vertici[0]) p1 = punto2d(5,10) p2 = punto2d(3,-1) p3 = punto2d() p4 = punto2d(10,5) p5 = punto2d(12,2) t = triangolo(p1, p2, p3) t2 = triangolo(p1, p2, punto2d(10,10)) poli = poligono([p1,p2,p3,p4,p5]) print(poli.perimetro())