Advertisement
fevzi02

добавления вершины и удаления вершины

Jan 19th, 2021
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.08 KB | None | 0 0
  1. """ 3. В классе Graph добавить метод добавления вершины в граф, метод удаления вершины из графа """
  2. class Graph:
  3.     def __init__(self,graph_dict = None):
  4.         if graph_dict == None:
  5.             self.graph_dict = {}
  6.         self.graph_dict = graph_dict
  7.  
  8.     def add_vertices_to_the_graph(self):
  9.         while True:
  10.             vertice = input("Введите новую вершину графа: ")
  11.             if vertice in self.graph_dict.keys():
  12.                 print ("Такая вершина уже существует\n",'-'*26)
  13.             else:
  14.                 Graph.func_a_v_t_t_g(self, vertice)
  15.                 break
  16.  
  17.     def remove_vertices_in_a_graph(self):
  18.         while True:
  19.             vertice = input("Удалить вершину графа: ")
  20.             if vertice in self.graph_dict.keys():
  21.                 Graph.func_r_v_i_a_g(self, vertice)
  22.                 break
  23.             else:
  24.                 print ("Такой вершины не существует\n",'-'*26)
  25.  
  26.     def func_r_v_i_a_g(self, name):
  27.         del self.graph_dict[name]
  28.         for vertex in self.graph_dict:
  29.             if name in self.graph_dict.get(vertex):
  30.                 i = -1
  31.                 for l in self.graph_dict.get(vertex):
  32.                     i += 1
  33.                     if l == name:
  34.                         del self.graph_dict.get(vertex)[i]
  35.  
  36.     def func_a_v_t_t_g(self, name):
  37.         self.graph_dict[name] = []
  38.  
  39.         while True:
  40.             peremen = False
  41.             question = input('Добавить смежную вершину для вершины "{}"  ? (Y - да) - '.format(name))
  42.             if question == "Y":
  43.                 vert = input("Введите смежную вершину: ")
  44.                 for l in list(self.graph_dict.values()):
  45.                     if vert in l :
  46.                         peremen = True
  47.                 if vert == name:
  48.                     peremen = True
  49.                 if peremen == True:
  50.                     if len(self.graph_dict.get(name)) == 0:        #из-за ошибки вследствие несуществования последнего элимента списка
  51.                         self.graph_dict.get(name).append(vert)
  52.                     else:
  53.                         if vert not in self.graph_dict.get(name)[-1]:
  54.                             self.graph_dict.get(name).append(vert)
  55.                 else:
  56.                     print("Такой вершены не существует в графе!")
  57.             else:
  58.                 break
  59.         print(self.graph_dict.get(name))
  60.         for gdgn in self.graph_dict.get(name):
  61.             if gdgn != name:
  62.                 self.graph_dict.get(gdgn).append(name)
  63.  
  64.  
  65. g_raph = {'A':["C","G"],
  66.      'B':["C", "E"],
  67.      'C':["A", "B", "D", "E"],
  68.      'D':["C"],
  69.      'E':["C", "B"],
  70.      'F':["F"],
  71.      'G':["G", "A"],
  72.      'H':[]}
  73.  
  74. graph = Graph(g_raph)
  75. graph.add_vertices_to_the_graph()
  76. #graph.remove_vertices_in_a_graph()
  77. print("-"*30)
  78. print(graph.graph_dict)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement