petrson

Untitled

Sep 28th, 2021 (edited)
675
1 day
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # realese simple point class
  2. class Point:
  3.     def __init__(self, x, y):
  4.         self.x = x
  5.         self.y = y
  6.         self._xy = (x, y)
  7.  
  8.     @property
  9.     def xy(self):
  10.         return self._xy
  11.  
  12. # handle input example
  13. def get_points():
  14.     print('Вводите координаты точки x и y разделенные пробелом')
  15.     print('Для завершений ввода введите пустую строку ')
  16.     res = []
  17.     while True:
  18.         coord = input(">>>")
  19.         if not coord:
  20.             return res
  21.         x, y = coord.split()
  22.         res.append(Point(float(x), float(y)))
  23.  
  24.  
  25. def check_symmetry(args):
  26.     if len(args) ==0:
  27.         return
  28.     point_dict = {}
  29.     avg_x = 0
  30.     for item in args:
  31.         avg_x += item.x
  32.         point_dict[item.xy] = True # hash value points
  33.     avg_x /= len(args)
  34.     for item in args:
  35.         # checking the existence of a symmetric point
  36.         if point_dict.get((2*avg_x - item.x, item.y), False):
  37.             continue
  38.         else:
  39.             return None
  40.     return avg_x
  41.  
  42.  
  43. def main():
  44.     points = get_points()
  45.     res = check_symmetry(points)
  46.     if res is None:
  47.         return res
  48.     print("Существует вертикальная ось симметрии с абциссой  =", res)
  49.     return res
  50.  
  51.  
  52. if __name__ == '__main__':
  53.     main()
RAW Paste Data