Как решить проблему с кодом в задаче очередь с защитой от ошибок
Решал задачу, написал код подобно с деком, но не работает, пробовал все возможно редактировать, подскажите что конкретно не так, код не нужно.
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)