Você está aqui: Python ::: Estruturas de Dados ::: Filas

Como criar uma fila em Python usando um vetor de inteiros e programação orientada a objetos - A classe Fila

Quantidade de visualizações: 671 vezes
Uma fila é uma estrutura de dados do tipo FIFO (First-In-First-Out), na qual o primeiro elemento a entrar na estrutura é o primeiro a ser removido.

Há inúmeras formas de se implementar uma fila em Python. Nesta dica mostrarei como podemos realizar essa tarefa usando uma classe Fila, na qual usaremos um vetor redimensionável (criado a partir de um objeto List).

Note que a nossa classe Fila possui os seguintes métodos enfileirar(), desenfileirar(), is_cheia(), is_vazia() e exibir().

Veja o código completo para a classe Fila:

Código para fila.py:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# definição da classe Fila
class Fila:
  # construtor da classe
  def __init__(self, capacidade):
    # vetor usado para guardar os elementos
    self.elementos = [None] * capacidade
    # para controlar o início da fila
    self.inicio = 0
    # para controlar o final da fila
    self.fim = 0
    # para registrar o tamanho da fila
    self.tamanho = 0
    # manter um registro da capacidade
    self.capacidade = capacidade

  # método que permite verificar se a fila está cheia
  def is_cheia(self):
    # a capacidade é igual ao tamanho da fila?  
    return self.capacidade == self.tamanho

  # método que permite enfileirar um novo valor na fila
  def enfileirar(self, valor):
    # a fila está cheia?
    if self.is_cheia():
      raise Exception("A fila está cheia")

    # insere o novo elemento no final da fila
    self.elementos[self.fim] = valor
    # ajusta a variável fim para a próxima posição
    self.fim += 1
    # incrementa o tamanho da fila
    self.tamanho += 1
    # mostra uma mensagem de sucesso para fins de depuração
    print("O valor {0} foi enfileirado.".format(valor))

  # método que permite desenfileirar o elemento na frente da fila
  def desenfileirar(self):
    # a fila está vazia?
    if self.is_vazia():
      raise Exception("A fila está vazia")

    # a fila não está vazia. Vamos retornar o elemento na frente
    valor = self.elementos[self.inicio]
    # inicio agora aponta para o próximo elemento
    self.inicio += 1
    
    # depois da remoção a lista vai ficar vazia?
    if self.inicio == self.fim:
      self.inicio = 0
      self.fim = 0

    # diminuimos o tamanho da fila
    self.tamanho -= 1
    # retorna o elemento removido
    return valor

  # método que permite verificar se a fila está vazia
  def is_vazia(self):
    # o tamanho da fila é 0?  
    return self.tamanho == 0

  # método que permite exibir o conteúdo da fila
  def exibir(self):
    if not self.is_vazia():
      # varremos os elementos da fila
      print("Elementos na fila:", end=" ")
      for i in range(self.inicio, self.fim):
        print(self.elementos[i], end=" ")

      print("\nO elemento no início da fila é: {0}".format(self.elementos[self.inicio]))
      print("O elemento no final da fila é: {0}".format(self.elementos[self.fim - 1]))
      print("O índice do elemento no início da fila é: {0}".format(self.inicio))
      print("O índice do elemento no final da fila é: {0}".format(self.fim - 1))

Código para principal.py:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# vamos importar a classe Fila
from fila import Fila

# função principal do programa
def main():
  # vamos criar uma nova fila com capacidade para 10 elementos
  fila = Fila(10)

  # vamos enfileirar 4 valores
  if not fila.is_cheia():
    fila.enfileirar(30)
    fila.enfileirar(19)
    fila.enfileirar(73)
    fila.enfileirar(58)
  else:
    print("A fila está cheia")

  # agora vamos exibir o conteúdo da fila
  if not fila.is_vazia():
    fila.exibir()

  # vamos desenfileirar 3 valores 
  if not fila.is_vazia():
    valor = fila.desenfileirar()
    print("O valor {0} foi desenfileirado.".format(valor))
  if not fila.is_vazia():
    valor = fila.desenfileirar()
    print("O valor {0} foi desenfileirado.".format(valor))
  if not fila.is_vazia():
    valor = fila.desenfileirar()
    print("O valor {0} foi desenfileirado.".format(valor))  

  # agora vamos exibir o conteúdo da fila novamente
  if not fila.is_vazia():
    fila.exibir()

if __name__== "__main__":
  main()

Ao executar este código Python nós teremos o seguinte resultado:

O valor 30 foi enfileirado.
O valor 19 foi enfileirado.
O valor 73 foi enfileirado.
O valor 58 foi enfileirado.
Elementos na fila: 30 19 73 58
O elemento no início da fila é: 30
O elemento no final da fila é: 58
O índice do elemento no início da fila é: 0
O índice do elemento no final da fila é: 3
O valor 30 foi desenfileirado.
O valor 19 foi desenfileirado.
O valor 73 foi desenfileirado.
Elementos na fila: 58
O elemento no início da fila é: 58
O elemento no final da fila é: 58
O índice do elemento no início da fila é: 3
O índice do elemento no final da fila é: 3

Link para compartilhar na Internet ou com seus amigos:

Python ::: Dicas & Truques ::: Formatação de datas, strings e números

Como inserir uma determinada quantidade de espaços à esquerda de um valor numérico usando Python

Quantidade de visualizações: 7412 vezes
Este trecho de código Python mostra como definir uma quantidade de caracteres de espaço à esquerda de um valor numérico. Este exemplo funciona com inteiros. Para ponto-flutuante você deve trocar "d" por "f".

Veja o código:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# método principal
def main():
  valor = 54

  # com três espaços
  print("O valor é %5d" % valor)

  # com nove espaços
  print("O valor é %11d" % valor)

  # com quatro espaços
  print("O valor é %6d" % valor)

if __name__== "__main__":
  main()

Ao executar este código Python nós teremos o seguinte resultado:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

O valor é    54
O valor é          54
O valor é     54



Python ::: Dicas & Truques ::: Lista (List)

Curso completo de Python - Como obter a quantidade de itens em uma lista Python

Quantidade de visualizações: 8668 vezes
Nesta dica mostrarei como podemos usar a função len() da linguagem Python para obtermos a quantidade de itens em um objeto List. Não deixe de ver outros exemplos de List nesta mesma seção.

Veja o código Python completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

def main():
  # cria uma lista de nomes
  nomes = ['Carlos', 'Ricardo', 'Osmar']
 
  # obtém a quantidade de elementos na lista
  print("A lista contém %d itens" % len(nomes))

if __name__== "__main__":
  main()

Ao executar este código Python nós teremos o seguinte resultado:

A lista contém 3 itens


Python ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle

Exercício Resolvido de Python - Um comerciante comprou um produto e quer vendê-lo com um lucro de 45% se o valor da compra for menor

Quantidade de visualizações: 1711 vezes
Algoritmos Resolvidos de Python - Um comerciante comprou um produto e quer vendê-lo com um lucro de 45% se o valor da compra for menor

Pergunta/Tarefa:

Um comerciante comprou um produto e quer vendê-lo com um lucro de 45% se o valor da compra for menor que R$ 20,00; caso contrário, o lucro será de 30%. Elabore um algoritmo que leia o valor do produto e imprima o valor de venda para o produto.

Sua saída deverá ser parecida com:

Informe o valor do produto: 85
O valor de venda é: 110.5
Resposta/Solução:

Veja a resolução comentada deste exercício usando Python:

Código para principal.py:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# método principal
def main():
  # valor ler o valor do produto
  valor = float(input("Informe o valor do produto: "))
  
  # vamos calcular o valor de venda
  if valor < 20:
    valor_venda = valor + (valor * (45.0 / 100)) 
  else:
    valor_venda = valor + (valor * (30.0 / 100))
  
  print("O valor de venda é: {0}".format(valor_venda))
  
if __name__== "__main__":
  main()



Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Densidade de um fluido

Um fluido encontra-se em um recipiente com volume de 300L. Sabendo que a massa desse fluido é de 2kg, qual a sua densidade em kg/m3?

A) 0,67kg/m3.

B) 6,67kg/m3.

C) 0,15kg/m3.

D) 150kg/m3.

E) 151,5kg/m3.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil

Formas: Confecção e colocação

Em relação aos materiais utilizados para formas, assinale a alternativa correta.

A) A fibra de vidro é muito utilizada para pilares e vigas.

B) Formas em poliestireno expandido são altamente reaproveitadas.

C) Vidro é muito utilizado para concreto aparente.

D) Tubos de papelão são muito usados em pilares de seção circular e em estruturas com caixão perdido.

E) As tábuas são os materiais que proporcionam o maior reaproveitamento.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Ética e Legislação Profissional

Princípios específicos do Direito do Consumidor

Assinale, abaixo, a única alternativa correta.

A) A informação não é direito básico do consumidor.

B) O reconhecimento da vulnerabilidade do consumidor é um dos princípios do Código de Defesa do Consumidor.

C) O Código de Defesa do Consumidor reconhece e dá tratamento isonômico ao consumidor e ao fornecedor.

D) O Código de Defesa do Consumidor é considerado lei geral, enquanto que o Código Civil lei especial.

E) É válida cláusula elaborada pelo fornecedor, onde expressamente impeça o consumidor, que venha a celebrá-lo, de reclamar seus direitos perante o Judiciário.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em

Domínios de Deformações

Vigas de concreto armado, com seções submetidas a um momento fletor e a um esforço cortante, são dimensionadas de tal forma que se determine uma armadura longitudinal para resistir ao momento fletor e uma armadura transversal para resistir ao esforço cortante.

Analise as informações a seguir, a respeito da solicitação normal do tipo momento fletor:

I) Solicitação de flexão simples ocorre quando a única solicitação atuante é o momento fletor.

II) Solicitação de flexão composta ocorre quando, além do momento fletor, há uma força normal atuante.

III) Solicitação de flexão oblíqua ocorre quando o plano de flexão compreende um eixo de simetria da seção transversal.

Assinale a alternativa correta:

A) Somente a afirmação I está correta.

B) Somente as afirmações I e II estão corretas.

C) Somente a afirmação II está correta.

D) Somente a afirmação III está correta.

E) Somente as afirmações II e III estão corretas.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fundações

Fundações profundas

A grande vantagem das estacas moldadas in solo em relação às pré-moldadas é permitir que o comprimento estritamente necessário seja concretado.

O tipo de fundação profunda constituída por concreto, moldada in loco e executada por meio de trado contínuo e injeção de concreto pela própria haste do trado, é a:

A) estaca escavada mecanicamente.

B) estaca injetada.

C) estaca hélice contínua.

D) estaca Franki.

E) estaca-raiz.
Verificar Resposta Estudar Cards Todas as Questões

Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Python

Veja mais Dicas e truques de Python

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 63 usuários muito felizes estudando em nosso site.