# !/usr/bin/env python # -*- coding: utf-8 -*- from math import sqrt, pow class Point(object): def __init__(self, name, x, y): self.name = name self.x, self.y = x, y class Figure(): def __init__(self): self.console_line_length = 40 def calculateDistance(self, point_start, point_end): return sqrt( pow(point_end.x - point_start.x, 2) + pow(point_end.y - point_start.y, 2) ) def displayConsoleLine(self): print("\n".ljust(self.console_line_length, "*"), "\n") class Line(Figure): def __init__(self, obj_point_a, obj_point_b): self.point_a = obj_point_a self.point_b = obj_point_b Figure.__init__(self) def build(self): self.side_AB = self.calculateDistance(self.point_a, self.point_b) def getPerimeter(self): return self.side_AB def displayLegendPoints(self): self.displayConsoleLine() self.displayConsoleLine() print("\nPuntos Line: A (x1,y1), B (x2,y2)\n") self.displayConsoleLine() print("Asignacion Multiple de variables\n") self.displayConsoleLine() print("x1 = 2") print("x2, x3 = x1 ^ 2, 5 * x1") print("y1, y2, y3 = 2 * x1, x2 ^ 2, (x1 * x2) + 1") self.displayConsoleLine() print( "Punto {} (x,y): ({},{})".format( self.point_a.name, self.point_a.x, self.point_a.y, ) ) print( "Punto {} (x,y): ({},{})".format( self.point_b.name, self.point_b.x, self.point_b.y, ) ) def displayPointsDistance(self): self.displayConsoleLine() print("Distancia de Puntos") self.displayConsoleLine() print( "{} -> {}: {}".format( self.point_a.name, self.point_b.name, self.side_AB, ) ) class Triangle(Figure): def __init__(self, obj_point_a, obj_point_b, obj_point_c): self.point_a = obj_point_a self.point_b = obj_point_b self.point_c = obj_point_c Figure.__init__(self) def build(self): self.side_AB = self.calculateDistance(self.point_a, self.point_b) self.side_AC = self.calculateDistance(self.point_a, self.point_c) self.side_BC = self.calculateDistance(self.point_b, self.point_c) def getPerimeter(self): return self.side_AB + self.side_BC + self.side_AC def displayLegendPoints(self): self.displayConsoleLine() self.displayConsoleLine() print("\nPuntos Triangle: A (x1,y1), B (x2,y2), C (x3,y3)\n") self.displayConsoleLine() print("Asignacion Multiple de variables\n") self.displayConsoleLine() print("x1 = 2") print("x2, x3 = x1 ^ 2, 5 * x1") print("y1, y2, y3 = 2 * x1, x2 ^ 2, (x1 * x2) + 1") self.displayConsoleLine() print( "Punto {} (x,y): ({},{})".format( self.point_a.name, self.point_a.x, self.point_a.y, ) ) print( "Punto {} (x,y): ({},{})".format( self.point_b.name, self.point_b.x, self.point_b.y, ) ) print( "Punto {} (x,y): ({},{})".format( self.point_c.name, self.point_c.x, self.point_c.y, ) ) def displayPointsDistance(self): self.displayConsoleLine() print("Distancia de Puntos") self.displayConsoleLine() print( "{} -> {}: {}".format( self.point_a.name, self.point_b.name, self.side_AB, ) ) print( "{} -> {}: {}".format( self.point_a.name, self.point_c.name, self.side_AC, ) ) print( "{} -> {}: {}".format( self.point_b.name, self.point_c.name, self.side_BC, ) ) class App(Figure): def display(self, Figure): self.figure = Figure self.figure.displayLegendPoints() self.figure.displayPointsDistance() self.displayFigurePerimeter() def displayFigurePerimeter(self): if isinstance(self.figure, Line): print("\nLa longitud es {}".format(self.figure.getPerimeter())) else: print("\nEl perimetro es {}".format(self.figure.getPerimeter())) if __name__ == "__main__": # Asignacion multiple de variables. x1 = 2 x2, x3 = pow(x1, 2), 5 * x1 y1, y2, y3 = 2 * x1, pow(x2, 2), x2 * x1 + 1 point_a = Point("A", x1, y1) point_b = Point("B", x2, y2) point_c = Point("C", x3, y3) line = Line(point_a, point_b) line.build() triangle = Triangle(point_a, point_b, point_c) triangle.build() console = App() console.display(line) console.display(triangle)