Приоритетная очередь в python получает значение - PullRequest
0 голосов
/ 15 марта 2019

Я новичок здесь.Я использую приоритет «очередь», который создается случайным образом с двумя типами событий прибытия и отправления, как вы можете видеть в коде.Мне нужно проверить наименьшее сгенерированное значение и проверить, связано ли оно с 'A' или 'D', использование'queue.get 'не дает.

class PriorityQueue(object):
    def __init__(self):
        self.queue = []

    def __str__(self):
        return ' '.join([str(i) for i in self.queue])

        # for checking if the queue is empty

    def isEmpty(self):
        return len(self.queue) == []

        # for inserting an element in the queue

    def insert(self, data):
        self.queue.append(data)

        # for popping an element based on Priority

    def delete(self):
        try:
            max = 0
            for i in range(len(self.queue)):
                if self.queue[i] < self.queue[max]:
                    max = i
            item = self.queue[max]
            del self.queue[max]
            return item
        except IndexError:
            print()
            exit()


if __name__ == '__main__':


    queue = PriorityQueue()

    Arrival = int(random.expovariate(1/15))
    Departure = randint(15, 45)

    queue.insert((Arrival, 'A'))
    queue.insert((Departure, 'D'))

    Arrival = int(random.expovariate(1/15))
    Departure = randint(15, 45)

    queue.insert((Arrival, 'A'))
    queue.insert((Departure, 'D'))

    Arrival = int(random.expovariate(1/15))
    Departure = randint(15, 45)

    queue.insert((Arrival, 'A'))
    queue.insert((Departure, 'D'))

    Arrival = int(random.expovariate(1/15))
    Departure = randint(15, 45)

    queue.insert((Arrival, 'A'))
    queue.insert((Departure, 'D'))

    Arrival = int(random.expovariate(1/15))
    Departure = randint(15, 45)

    queue.insert((Arrival, 'A'))
    queue.insert((Departure, 'D'))

    print(queue)

    while not queue.isEmpty():
        print(queue.delete())

    queue = Variaveis()

Я должен в конце напечататьс помощью «если» значения A и D в порядке возрастания.

1 Ответ

0 голосов
/ 15 марта 2019

Я не совсем понимаю ваш вопрос.

Зачем вам нужно импортировать случайный и случайный импорт randint? Поскольку вы просто используете 2 функции из случайного модуля, вы можете

 from random import randint, expovariate

Как отмечено

queue = Variaveis()

выдает ошибку, поэтому я ее проигнорировал, так как в этом контексте это не имеет значения.

Пример результата:

(0, 'A') (43, 'D') (3, 'A') (40, 'D') (8, 'A') (15, 'D') (7, 'A') (26, 'D') (15, 'A') (25, 'D')
(0, 'A')
(3, 'A')
(7, 'A')
(8, 'A')
(15, 'A')
(15, 'D')
(25, 'D')
(26, 'D')
(40, 'D')
(43, 'D')

Первая строка исключает список, очевидно, отсортирован по наибольшему значению в паре. Если вы хотите соответствовать A и D, я рекомендую

queue.insert((Arrival, 'A'), (Departure, 'D'))

Я также рекомендую взглянуть на функции list.sort () и другие полезные операции со списками здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...