обратный список и проблемы с добавлением - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь создать очередь, и моя первая проблема заключается в том, что мои выходные данные печатают раздел «содержимое» в обратном порядке (то есть «содержимое: 5, 4, 3, 2, 1» вместо 1, 2,3, 4, 5)

У меня также есть проблема с частью позже в главном разделе, где у меня есть числа + = 15, и очередь должна быть 10-15, но у меня естьпонятия не имею, как это сделать

 class Queue:
     def __init__(self, items):
         self.items = []

     def is_empty(self):
         return self.items == []

     def enqueue(self, item):
         self.items.insert(0, item)

     def __repr__(self):
    return "Contents: {}".format(str(self.items).strip("[]"))

     def dequeue(self):
         return self.items.pop()

     def size(self):
         return len(self.items)

 # -----------------------------------------------------

 def main():
     numbers = Queue("Numbers")

     print("Enqueue 1, 2, 3, 4, 5")
     print("---------------------")
     for number in range(1, 6):
         numbers.enqueue(number)
         print(numbers)

     print("\nDequeue one item")
     print("----------------")
     numbers.dequeue()
     print(numbers)

     print("\nDeque all items")
     print("---------------")
     while not numbers.is_empty():
         print("Item dequeued:", numbers.dequeue())
         print(numbers)

     # Enqueue 10, 11, 12, 13, 14
     for number in range(10, 15):
         numbers.enqueue(number)

     # Enqueue 15
     numbers += 15

     print("\n10, 11, 12, 13, 14, 15 enqueued")
     print("-------------------------------")
     print(numbers)

 # -----------------------------------------------------

 main()

1 Ответ

0 голосов
/ 06 ноября 2019

С помощью следующего кода:

print("Enqueue 1, 2, 3, 4, 5")
print("---------------------")
for number in range(1, 6):
    numbers.enqueue(number)

вы добавляете числа 1, 2, 3, 4 и 5 к структуре данных. Благодаря реализации enqueue каждое число добавляется в начало списка (нулевой индекс):

def enqueue(self, item):
    self.items.insert(0, item)

Т.е. после вставки 1, 2, 3, 4 и 5 вы получаетесписок, содержащий [5, 4, 3, 2, 1].

Если вы хотите, чтобы каждое число добавлялось в конец items, вам следует изменить метод на:

def enqueue(self, item):
    self.items.append(item)

, что заставит его напечатать это вместо:

Enqueue 1, 2, 3, 4, 5                                                                 
---------------------                                                                 
Contents: 1                                                                           
Contents: 1, 2                                                                        
Contents: 1, 2, 3                                                                     
Contents: 1, 2, 3, 4                                                                  
Contents: 1, 2, 3, 4, 5                                                               

Кроме того, чтобы поставить в очередь 15 в структуру данных. Изменить:

    # Enqueue 15
    numbers += 15

на:

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