Как решить проблему с кодом в задаче очередь с защитой от ошибок

Решал задачу, написал код подобно с деком, но не работает, пробовал все возможно редактировать, подскажите что конкретно не так, код не нужно.

s = ''
a = []
l = 0
h = 0
q = []
while s != 'exit':
    s = input().split()
    if s[0] == 'push':
        a.append('ok')
        q.insert(0, s[1])
        l += 1
    elif s[0] == 'pop':
        if l == 0:
            a.append('error')
        else:
            a.append(q.pop(0))
            l -= 1
    elif s[0] == 'front':
        if l == 0:
            a.append('error')
        else:
            a.append(q[0])
    elif s[0] == 'size':
        a.append(l)
    elif s[0] == 'clear':
        q = []
        l = 0
        a.append('ok')
    elif s[0] == 'exit':
        a.append('bye')
        break
for i in a:
    print(i)

Сама задача звучит так:

Очередь с защитой от ошибок

Реализуйте структуру данных "очередь". Напишите программу, содержащую описание очереди и моделирующую работу очереди, реализовав все указанные здесь методы. Программа считывает последовательность команд и в зависимости от команды выполняет ту или иную операцию. После выполнения каждой команды программа должна вывести одну строчку. Возможные команды для программы:

push n — добавить в очередь число n (значение n задаётся после команды). Программа должна вывести ok; pop — удалить из очереди первый элемент. Программа должна вывести его значение; front — программа должна вывести значение первого элемента, не удаляя его из очереди; size — программа должна вывести количество элементов в очереди; clear — программа должна очистить очередь и вывести ok; exit — программа должна вывести bye и завершить работу. Перед исполнением операций front и pop программа должна проверять, содержится ли в очереди хотя бы один элемент. Если во входных данных встречается операция front или pop и при этом очередь пуста, то программа должна вместо числового значения вывести строку error.

Входные данные

Вводятся команды управления очередью, по одной команде в строке. Среди них обязательно присутствует команда exit.

Выходные данные

Требуется вывести протокол работы очереди, по одному сообщению в строке.

Примеры Ввод:

push 1
front
exit

Вывод:

ok
1
bye

Ввод 2:

size
push 1
size
push 2
size
push 3
size
exit

Вывод 2:

0
ok
1
ok
2
ok
3
bye

А вот код с деком и он обсолютно все тесты проходит:

s = ''
a = []
l = 0
h = 0
q = []
while s != 'exit':
    s = input().split()
    if s[0] == 'push_front':
        a.append('ok')
        q.insert(0, s[1])
        l += 1
    elif s[0] == 'push_back':
        a.append('ok')
        q.append(s[1])
        l += 1
    elif s[0] == 'pop_front':
        if l == 0:
            a.append('error')
        else:
            a.append(q.pop(0))
            l -= 1
    elif s[0] == 'pop_back':
        if l == 0:
            a.append('error')
        else:
            a.append(q.pop(-1))
            l -= 1
    elif s[0] == 'front':
        if l == 0:
            a.append('error')
        else:
            a.append(q[0])
    elif s[0] == 'back':
        if l == 0:
            a.append('error')
        else:
            a.append(q[-1])
    elif s[0] == 'size':
        a.append(l)
    elif s[0] == 'clear':
        q = []
        l = 0
        a.append('ok')
    elif s[0] == 'exit':
        a.append('bye')
        break
for i in a:
    print(i)

Ответы (0 шт):