Module (29%)
Section (94%)
Лабораторная работа

Время выполнения

20-45 минут

Уровень сложности

Низкий/Средний

Цели

  • улучшение навыков учащегося в создании классов с нуля;
  • реализация стандартных структур данных в виде классов.

Сценарий

Как Вы уже знаете, стек - это структура данных, реализующая модель LIFO (Last In - First Out). Это просто, и Вы уже к этому привыкли.

Давайте попробуем что-нибудь новенькое. очередь - это модель данных, характеризуемая термином FIFO: First In - Fist Out. Примечание: обычная очередь, известная Вам из магазинов или почтовых отделений, работает точно так же - первым обслуживается покупатель, который пришел первым.

Ваша задача - реализовать класс Queue с двумя основными операциями:

  • put(element), которая помещает элемент в конец очереди;
  • get(), которая берет элемент из начала очереди и возвращает его как результат (очередь не может быть пустой для успешного выполнения).

Следуйте подсказкам:

  • используйте список в качестве хранилища (как и в случае со стеком)
  • put() должен добавлять элементы в начало списка, а get() должен удалять элементы из конца списка;
  • определите новое исключение с именем QueueError (выберите исключение для его создания) и вызовите его, когда get() попытается работать с пустым списком.

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

Ожидаемый результат

1 dog False Queue error



Code

class QueueError(???): # Choose base class for the new exception.
#
# Напишите здесь код
#


class Queue:
def __init__(self):
#
# Напишите здесь код
#

def put(self, elem):
#
# Напишите здесь код
#

def get(self):
#
# Напишите здесь код
#


que = Queue()
que.put(1)
que.put("dog")
que.put(False)
try:
for i in range(4):
print(que.get())
except:
print("Queue error")
{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×