fork download
  1. # Punto: crea una clase que representa puntos 2D.
  2. # Poo.
  3.  
  4. import math
  5.  
  6.  
  7. class Punto:
  8. """Representa puntos formados por las coordenadas x e y"""
  9.  
  10. ORIGEN = None
  11. num_puntos = 0
  12.  
  13. @staticmethod
  14. def get_origen():
  15. if Punto.ORIGEN == None:
  16. Punto.ORIGEN = Punto(0, 0)
  17.  
  18. return Punto.ORIGEN
  19.  
  20. def __init__(self, x, y):
  21. """Crea un nuevo punto, dadas las coordenadas.
  22.  
  23. :param x: Coordenada x del punto
  24. :param y: Coordenada y del punto
  25. """
  26. self.x = x
  27. self.y = y
  28. Punto.num_puntos += 1
  29.  
  30. def calcula_distancia(self, p2):
  31. """Retorna la distancia entre este punto y otro
  32.  
  33. :param: p2 El otro punto.
  34. :return: La distancia entre este punto y p2.
  35. """
  36. distancia_x = self.x - p2.x
  37. distancia_y = self.y - p2.y
  38. return math.sqrt((distancia_x ** 2) + (distancia_y ** 2))
  39.  
  40. def calcula_distancia_origen(self):
  41. """Retorna la distancia desde el origen de coordenadas
  42. a este punto
  43.  
  44. :return: La distancia entre ambos puntos"""
  45. return self.calcula_distancia(Punto(0, 0))
  46.  
  47. def __str__(self):
  48. return str.format("({0}, {1})", self.x, self.y)
  49.  
  50. if __name__ == "__main__":
  51. p0 = Punto.get_origen()
  52. p1 = Punto(3, 4)
  53. p2 = Punto(5, 5)
  54.  
  55. print("Punto 0: " + str(p0))
  56. print("Punto 1: " + str(p1))
  57.  
  58. print("De", str(p0), "a", str(p1), ":", p1.calcula_distancia(p0))
  59. print("De", str(p0), "a", str(p2), ":", p2.calcula_distancia_origen())
  60.  
Success #stdin #stdout 0.02s 27720KB
stdin
Standard input is empty
stdout
Punto 0: (0, 0)
Punto 1: (3, 4)
De (0, 0) a (3, 4) : 5.0
De (0, 0) a (5, 5) : 7.0710678118654755