Для создания сеток в квадратной области в python

#python-3.x #grid

#python-3.x #сетка

Вопрос:

У меня есть квадратный макет размера 100*100 . Я хочу разделить этот макет на сетки разного размера 5*5 .Как я могу это сделать, используя python?

Комментарии:

1. Пожалуйста, будьте более конкретны в отношении того, чего вы пытаетесь достичь. Вы создаете графический интерфейс? Как вы добились макета 100 * 100? Какова конечная цель этой программы?

2. Это не для графического интерфейса, я хочу выделить узлы в этих сетках с разной плотностью. Чтобы иметь возможность это делать, я хочу сохранить вкладку с местоположениями и соответствующим номером сетки.

3. какой результат вы ожидаете от этого? Вы хотите создать функцию, которая может принимать размер сетки и возвращать список со всеми узлами? Я все еще не совсем понимаю, что вы имеете в виду под «соответствующим номером сетки»? Вы хотите указать индекс (например, 400) и получить узел (например, (20,20)?

4. Да, создайте функцию, которая может принимать размер сетки и возвращать список со всеми узлами. Я в основном хочу выделить ресурсы для каждой из этих сеток, а затем построить их на основе плотности ресурса в каждой сетке.

Ответ №1:

Я все еще не уверен, что это то, что вы ищете, поэтому поправьте меня, если это не так. Я предположил, что лучший способ справиться с описанной вами проблемой — создать Grid класс. Это упрощает одновременное создание нескольких разных сеток, не создавая беспорядка с данными. Я придумал это решение:

 class Grid():
    def __init__(self,x,y,grid_len):
        self.total_x = x
        self.total_y = y
        self.grid_len = grid_len
        self.node_list=[]
        for y in range(self.total_y//self.grid_len):
             for x in range(self.total_x//self.grid_len):
                self.node_list.append((x*self.grid_len,y*self.grid_len))

    def return_node_at_given_x_y(self,x,y):
        node_index = y*(self.total_y//self.grid_len)   x
        print(self.node_list[node_index])


my_grid = Grid(100,100,5)
print(my_grid.return_node_at_given_x_y(8,6))
#print(my_grid.node_list)
  

Я надеюсь, что это то, что вы искали. Вы можете изменить размер вашего базового квадрата или сеток при создании объекта. Grid(200,200,2) будет иметь grid_size 2 и размер квадрата 200×200.