Исправление дека
class Dek:
def __init__(self, max_size):
self._data = [None] * max_size
self._front = max_size - 1
self._back = 0
self._size = 0
def is_empty(self):
return self._size == 0
def push_back(self, value):
self._back = self._push(self._back, 1, value)
def pop_back(self):
self._back, value = self._pop(self._back, 1)
return value
def push_front(self, value):
self._front = self._push(self._front, -1, value)
def pop_front(self):
self._front, value = self._pop(self._front, -1)
return value
def _push(self, i, di, value):
if self._size >= len(self._data):
raise OverflowError
self._data[i] = value
self._size += 1
return (i + di) % len(self._data)
def _pop(self, i, di):
if self._size <= 0:
raise IndexError
j = (i - di) % len(self._data)
x = self._data[j]
self._data[j] = None
self._size -= 1
return j, x
def main():
count_command = int(input())
queue_size = int(input())
queue = Dek(queue_size)
for _ in range(count_command):
verb, *values = input().split()
op = getattr(queue, verb)
values = tuple(map(int, values))
try:
result = op(*values)
except (IndexError, OverflowError):
result = 'error'
if result is not None:
print(result)
if __name__ == '__main__':
main()
Нужна приватность для полей self._data = [None] * max_size пытаюсь использовать @property, но выдает ошибку inconsistent use of tabs and spaces in indentation
Как это исправить?
Ответы (1 шт):
Автор решения: Sop
→ Ссылка
class Dek:
def __init__(self, max_size):
self._data = [None] * max_size
self._front = max_size - 1
self._back = 0
self._size = 0
@property
def is_empty(self):
return self._size == 0
def push_back(self, value):
self._back = self._push(self._back, 1, value)
def pop_back(self):
self._back, value = self._pop(self._back, 1)
return value
def push_front(self, value):
self._front = self._push(self._front, -1, value)
def pop_front(self):
self._front, value = self._pop(self._front, -1)
return value
def _push(self, i, di, value):
if self._size >= len(self._data):
raise OverflowError
self._data[i] = value
self._size += 1
return (i + di) % len(self._data)
def _pop(self, i, di):
if self._size <= 0:
raise IndexError
j = (i - di) % len(self._data)
x = self._data[j]
self._data[j] = None
self._size -= 1
return j, x
def main():
count_command = int(input())
queue_size = int(input())
queue = Dek(queue_size)
for _ in range(count_command):
verb, *values = input().split()
op = getattr(queue, verb)
values = tuple(map(int, values))
try:
result = op(*values)
except (IndexError, OverflowError):
result = 'error'
if result is not None:
print(result)
if __name__ == '__main__':
main()