#coding: utf-8
#Klasa uproszczona - bez sprawdzania błędów.

#=======================================================================================[ T_QUEUE ]=======
class T_QUEUE:
  '''Klasa kolejki - struktury FIFO lub LILO. First Input First Output/ Last I Last O'''
  _DATA=[]									# Pojemnik na dane - zasadnicza kolejka.

#------------------------------------ OPER -------------------------------------------
#---============================[ APPEND ]==========================================[]
  def APPEND(self,I):
    '''Dopisuje element do kolejki. Jeśli jest przepełnienie zgłasza błąd.'''
    self._DATA+=[I]								# Dodaje element na końcu kolejki (końcu listy).

#---============================[ SHIFT ]==========================================[]
  def  SHIFT(self):
    '''Pobiera element ze kolejki. Jeśli jest pusty - zgłasza błąd.'''
    return self._DATA.pop(0)							# Pobiera i zwraca element z przodu kolejki (początku listy).

#------------------------------------ SHOW -------------------------------------------
#---============================[ SHOW ]==========================================[]
  def SHOW(self):
    '''pokazuje w przyjazny sposób kolejkę.'''
    print('-'*40)
    for i in range(len(self._DATA)):
      print(f'> {self._DATA[i]:4d} <',sep=',',end='')
    print()
    print('='*40)


#---============================[ __name__ ]==========================================[]
if __name__=="__main__":
  QUEUE=T_QUEUE()
  QUEUE.SHOW()
  for i in range(6):
    try:
      print(f'APPEND({10*i})')
      QUEUE.APPEND(10*i)
    except Exception as E:
      print(f'ERROR: {E}')
    QUEUE.SHOW()
  print('.'*100)
  for i in range(4):
    try:
      Q=QUEUE.SHIFT()
      print(f'Przesunął z kolejki {Q}')
    except Exception as E:
      print(f'ERROR: {E}')
    QUEUE.SHOW()
    print(f'APPEND({2*Q})')
    QUEUE.APPEND(Q*2)
    QUEUE.SHOW()
  for i in range(6):
    try:
      Q=QUEUE.SHIFT()
      print(f'Przesunął z kolejki {Q}')
    except Exception as E:
      print(f'ERROR: {E}')
    QUEUE.SHOW()





