Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Você está aqui: Python ::: NumPy Python Library (Biblioteca Python NumPy) ::: Matemática e Estatística

Tutorial Machine Learning com Python - Como usar o método mean() da biblioteca NumPy para calcular média (ou média aritmética simples)

Quantidade de visualizações: 3857 vezes
Média aritmética (ou simplesmente média simples) é a soma de vários valores e dividido pelo total deles. Ou seja, o resultado dessa divisão equivale a um valor médio entre todos os valores.

Veja a seguinte figura:



Veja que temos 4 valores: 4, 9, 12 e 25. Assim, para obter a média aritmética desses valores, só precisamos somá-los e depois dividir pela quantidade, ou seja, por 4. A média resultante será 12,5.

A biblioteca NumPy do Python nos oferece o método mean(), muito usado em Data Science e Machine Learning, que recebe um vetor de valores númericos (inteiro ou decimais) e retorna a média deles. Veja um exemplo:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

# importamos a biblioteca NumPy
import numpy

def main():
  # valores a serem observados
  valores = [4, 9, 12, 25]

  # vamos obter a média aritmética simples
  media = numpy.mean(valores)

  # vamos mostrar o resultado
  print("A média dos valores é:", media)

if __name__== "__main__":
  main()

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

A média dos valores é: 12.5

Link para compartilhar na Internet ou com seus amigos:

Python ::: Desafios e Lista de Exercícios Resolvidos ::: Python Básico

Exercício Resolvido de Python - Ler um número inteiro na faixa 0-999 e mostrar a soma de seus dígitos - Apostila de Python Básico

Quantidade de visualizações: 3038 vezes
Pergunta/Tarefa:

Escreva um programa Python que leia um inteiro na faixa 0-999 e mostre a soma de seus dígitos. Por exemplo, se o valor for 523, a soma de seus dígitos será 5 + 2 + 3 = 10. Lembre-se que você deverá usar apenas os operadores matemáticos e o operador de módulo (%). Seu programa deverá exibir a seguinte saída:

Informe um valor de 0 até 999: 821
A soma dos dígitos é: 11
Resposta/Solução:

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

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

# função principal do programa
def main():
  # vamos solicitar ao usuário que informe um valor inteiro
  # na faixa 0 a 999 (incluindo)
  valor = int(input("Informe um valor de 0 até 999: "))
  
  # vamos verificar se o valor está na faixa permitida
  if(valor < 0 or valor > 999):
    print("Valor fora da faixa permitida")
  else:
    # vamos obter o terceiro dígito
    terceiro = valor % 10
    # obtém os digitos restantes
    valor = valor // 10
 
    # vamos obter o segundo dígito
    segundo = valor % 10
    # obtém os digitos restantes
    valor = valor // 10
 
    # vamos obter o primeiro dígito
    primeiro = valor % 10
    # obtém os digitos restantes
    valor = valor // 10
 
    # vamos obter a soma dos dígitos
    soma = terceiro + segundo + primeiro
 
    # vamos mostrar o resultado
    print("A soma dos dígitos é:", soma)
  
if __name__== "__main__":
  main()



Python ::: Dicas & Truques ::: Matemática e Estatística

Como calcular MDC em Python - Python para matemática

Quantidade de visualizações: 12575 vezes
Python para matemática - Como calcular o MDC (Máximo Divisor Comum) em Python

Atualmente a definição de Máximo Divisor Comum (MDC) pode ser assim formalizada:

Sejam a, b e c números inteiros não nulos, dizemos que c é um divisor comum de a e b se c divide a (escrevemos c|a) e c divide b (c|b). Chamaremos D(a,b) o conjunto de todos os divisores comum de a e b.

O trecho de código abaixo mostra como calcular o MDC de dois números informados:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

# função que permite calcular o MDC
def MDC(a, b):
  while(b != 0):
    resto = a % b
    a = b
    b = resto
 
  return a

# função principal do programa
def main():
  print("Este programa permite calcular o MDC\n")
  x = int(input("Informe o primeiro valor: "))
  y = int(input("Informe o segundo valor: "))
  
  print("\nO Máximo Divisor Comum de", x, "e", y, "é", MDC(x, y))
  
if __name__== "__main__":
  main()

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

Este programa permite calcular o MDC
Informe o primeiro número: 12
Informe o segundo número: 9
O Máximo Divisor Comum de 12 e 9 é 3


Python ::: Dicas & Truques ::: Ordenação e Pesquisa (Busca)

Python Insertion Sort - Como ordenar um vetor de inteiros usando a ordenação Insertion Sort (Ordenação por Inserção)

Quantidade de visualizações: 3726 vezes
Nesta dica veremos como implementar a ordenação Insertion Sort, Insertion-Sort, ou Ordenação por Inserção na linguagem Python.

A ordenação Insertion Sort, Insertion-Sort, ou Ordenação por Inserção, possui uma complexidade de tempo de execução igual à ordenação Bubble Sort (Ordenação da Bolha), ou seja, O(n2). Embora mais rápido que o Bubble Sort, e ser um algorítmo de ordenação quadrática, a ordenação Insertion Sort é bastante eficiente para problemas com pequenas entradas, sendo o mais eficiente entre os algoritmos desta ordem de classificação, porém, nunca recomendada para um grande conjunto de dados.

A forma mais comum para o entendimento da ordenação Insertion Sort é compará-la com a forma pela qual algumas pessoas organizam um baralho num jogo de cartas. Imagine que você está jogando cartas. Você está com as cartas na mão e elas estão ordenadas. Você recebe uma nova carta e deve colocá-la na posição correta da sua mão de cartas, de forma que as cartas obedeçam à ordenação.

A cada nova carta adicionada à sua mão de cartas, a nova carta pode ser menor que algumas das cartas que você já tem na mão ou maior, e assim, você começa a comparar a nova carta com todas as cartas na sua mão até encontrar sua posição correta. Você insere a nova carta na posição correta, e, novamente, a sua mão é composta de cartas totalmente ordenadas. Então, você recebe outra carta e repete o mesmo procedimento. Então outra carta, e outra, e assim por diante, até não receber mais cartas.

Esta é a ideia por trás da ordenação por inserção. Percorra as posições do vetor (array), começando com o índice 1 (um). Cada nova posição é como a nova carta que você recebeu, e você precisa inseri-la no lugar correto no sub-vetor ordenado à esquerda daquela posição.

Vamos ver a implementação na linguagem Python agora? Observe o seguinte código, no qual temos um vetor de inteiros com os elementos {4, 6, 2, 8, 1, 9, 3, 0, 11}:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

# método que permite ordenar o vetor de inteiros
# usando a ordenação Insertion Sort
def insertionSort(vetor):
  # percorre todos os elementos do vetor começando
  # pelo segundo elemento
  for i in range(len(vetor)):
    atual = vetor[i] # o valor atual a ser inserido
    # começa a comparar com a célula à esquerda de i
    j = i - 1
      
    # enquanto vetor[j] estiver fora de ordem em relação
    # a atual
    while((j >= 0) and (vetor[j] > atual)):
      # movemos vetor[j] para a direita e decrementamos j
      vetor[j + 1] = vetor[j]
      j = j - 1
      
      # colocamos atual em seu devido lugar
      vetor[j + 1] = atual

# função principal do programa
def main():
  # cria uma lista de inteiros
  valores = [4, 6, 2, 8, 1, 9, 3, 0, 11]
  
  # exibimos o vetor na ordem original
  print("Ordem original:\n")
  for i in range(len(valores)):
    print(valores[i], end = "  ")
    
  # vamos ordenar o vetor agora
  insertionSort(valores)
    
  # exibimos o vetor ordenado
  print("\n\nOrdenado:\n")
  for i in range(len(valores)):
    print(valores[i], end = "  ")

if __name__== "__main__":
  main()

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

Sem ordenação:

4 6 2 8 1 9 3 0 11

Ordenada usando Insertion Sort:

0 1 2 3 4 6 8 9 11


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

Curso de Python - Como ordenar uma lista de strings baseado no tamanho de cada uma

Quantidade de visualizações: 8109 vezes
Este exemplo mostra como ordenar os elementos de uma List de strings baseado no tamanho da palavra, frase ou texto. Note como o valor "key = len" como argumento para o método sort() da classe List.

Veja o código completo para a dica:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

def main():
  # cria uma lista de nomes
  nomes = ['Carlos', 'Igor', 'Osmar', 'Fernanda']
 
  # exibe a lista na ordem original
  print(nomes)
  
  # ordena a lista
  nomes.sort(key = len)
 
  # exibe a lista ordenada
  print(nomes)

if __name__== "__main__":
  main()

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

['Carlos', 'Igor', 'Osmar', 'Fernanda']
['Igor', 'Osmar', 'Carlos', 'Fernanda']


Python ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes)

Exercício Resolvido de Python - Escreva um programa Python que leia os elementos de um vetor A de dez elementos inteiros e construa outro vetor B

Quantidade de visualizações: 334 vezes
Pergunta/Tarefa:

Escreva um programa Python que leia os elementos de um vetor A de dez elementos inteiros e construa outro vetor B com seus elementos distribuídos da seguinte forma:

Vetor A = [8, 5, 4, 1, 2, 3, 4, 6, 9, 7]
Vetor B = [24, 10, 12, 2, 6, 6, 12, 12, 27, 14]

Note que os elementos do vetor B seguem um padrão. Se o elemento do vetor A estiver em uma posição par, então o elemento do vetor B será o triplo do elemento do vetor A. Caso contrário o elemento do vetor B será o dobro do elemento do vetor A.

Neste exercício a primeira posição/índice dos vetores é assumida como sendo zero. Em algumas linguagens de programação o primeiro índice é um e não zero.

Sua saída deverá ser parecida com:

Informe o valor do 1.o elemento: 8
Informe o valor do 2.o elemento: 5
Informe o valor do 3.o elemento: 4
Informe o valor do 4.o elemento: 1
Informe o valor do 5.o elemento: 2
Informe o valor do 6.o elemento: 3
Informe o valor do 7.o elemento: 4
Informe o valor do 8.o elemento: 6
Informe o valor do 9.o elemento: 9
Informe o valor do 10.o elemento: 7

Elementos do vetor A:

8,  5,  4,  1,  2,  3,  4,  6,  9,  7  

Elementos do vetor B:

24,  10,  12,  2,  6,  6,  12,  12,  27,  14
Resposta/Solução:

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

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

# função principal do programa
def main():
  # vamos declarar e construir dois vetores de 10 inteiros
  vetor_a = [0 for x in range(10)]
  vetor_b = [0 for x in range(10)]

  # agora vamos pedir para o usuário informar os valores
  # dos elementos do vetor A
  for i in range(len(vetor_a)):
    vetor_a[i] = int(input("Valor do %d.o elemento: " % ((i + 1))))
    
  # vamos construir o vetor B
  for i in range(len(vetor_b)):
    # o índice atual é par?
    if i % 2 == 0:
      vetor_b[i] = vetor_a[i] * 3
    else:
      vetor_b[i] = vetor_a[i] * 2
      
  # vamos mostrar os elementos do vetor A
  print("\nElementos do vetor A:\n")
  for i in range(len(vetor_a)):
    print("%d,  " % vetor_a[i], end=' ')

  # vamos mostrar os elementos do vetor B
  print("\n\nElementos do vetor B:\n")
  for i in range(len(vetor_b)):
    print("%d,  " % vetor_b[i], end=' ')

if __name__== "__main__":
  main()



Python ::: Fundamentos da Linguagem ::: Estruturas de Controle

Como usar o laço while do Python - Python para iniciantes

Quantidade de visualizações: 15394 vezes
O laço while da linguagem Python permite executar um bloco de códigos repetidamente até que uma condição seja verdadeira. Opcionalmente, uma cláusula else pode ser usado com o while em Python (a parte else será executada mesmo que o corpo principal do laço não seja executado). Veja um exemplo:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

# função principal do programa
def main():
  numero = 0
 
  while numero <= 10:
    print(numero)
    numero = numero + 1
  else:
    print("Terminei")
  
if __name__== "__main__":
  main()

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

0
1
2
3
4
5
6
7
8
9
10
Terminei

Veja um exemplo de um laço while que nunca será executado:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

# função principal do programa
def main():
  numero = 0
 
  while numero > 10:
    print(numero)
    numero = numero + 1
  
if __name__== "__main__":
  main()

E agora um exemplo de laço usando um valor booleano:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

# função principal do programa
def main():
  continuar = True
  valor = 0
 
  while continuar:
    print(valor)
   
    if valor > 5:
      continuar = False
    else:
      valor = valor + 1
  
if __name__== "__main__":
  main()

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

0
1
2
3
4
5
6


Python ::: Python para Engenharia ::: Geometria Analítica e Álgebra Linear

Como calcular vetor unitário em Python - Python para Física e Engenharia

Quantidade de visualizações: 739 vezes
Um vetor unitário ou versor num espaço vetorial normado é um vetor (mais comumente um vetor espacial) cujo comprimento ou magnitude é 1. Em geral um vetor unitário é representado por um "circunflexo", assim: __$\hat{i}__$.

O vetor normalizado __$\hat{u}__$ de um vetor não zero __$\vec{u}__$ é o vetor unitário codirecional com __$\vec{u}__$.

O termo vetor normalizado é algumas vezes utilizado simplesmente como sinônimo para vetor unitário. Dessa forma, o vetor unitário de um vetor __$\vec{u}__$ possui a mesma direção e sentido, mas magnitude 1. Por magnitude entendemos o módulo, a norma ou comprimento do vetor.

Então, vejamos a fórmula para a obtenção do vetor unitário:

\[\hat{u} = \dfrac{\vec{v}}{\left|\vec{v}\right|}\]

Note que nós temos que dividir as componentes do vetor pelo seu módulo de forma a obter o seu vetor unitário. Por essa razão o vetor nulo não possui vetor unitário, pois o seu módulo é zero, e, como sabemos, uma divisão por zero não é possível.

Veja agora o código Python que pede as coordenadas x e y de um vetor 2D ou R2 e retorna o seu vetor unitário:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

# vamos precisar do módulo Math
import math

# função principal do programa
def main():
  # vamos ler os valores x e y
  x = float(input("Informe o valor de x: "))
  y = float(input("Informe o valor de y: "))
     
  # o primeiro passo é calcular a norma do vetor
  norma = math.sqrt(math.pow(x, 2) + math.pow(y, 2))
    
  # agora obtemos as componentes x e y do vetor unitário
  u_x = x / norma
  u_y = y / norma
    
  # mostra o resultado
  print("O vetor unitário é: (x = {0}; y = {1})".format(u_x, u_y))
  
if __name__== "__main__":
  main()

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

Informe o valor de x: -4
Informe o valor de y: 6
O vetor unitário é: (x = -0.5547001962252291; y = 0.8320502943378437)

Veja agora uma modificação deste código para retornarmos o vetor unitário de um vetor 3D ou R3, ou seja, um vetor no espaço:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

# vamos precisar do módulo Math
import math

# função principal do programa
def main():
  # vamos ler os valores x, y e z
  x = float(input("Informe o valor de x: "))
  y = float(input("Informe o valor de y: "))
  z = float(input("Informe o valor de z: "))
     
  # o primeiro passo é calcular a norma do vetor
  norma = math.sqrt(math.pow(x, 2) + math.pow(y, 2) + math.pow(z, 2))
    
  # agora obtemos as componentes x, y e z do vetor unitário
  u_x = x / norma
  u_y = y / norma
  u_z = z / norma
    
  # mostra o resultado
  print("O vetor unitário é: (x = {0}; y = {1}; z = {2})".format(
    u_x, u_y, u_z))
  
if __name__== "__main__":
  main()

Ao executarmos este novo código nós teremos o seguinte resultado:

Informe o valor de x: 3
Informe o valor de y: 7
Informe o valor de z: 5
O vetor unitário é: (x = 0.329292779969071; y = 0.7683498199278324; z = 0.5488212999484517)


Python ::: Estruturas de Dados ::: Lista Ligada Simples

Como excluir um nó no final de uma lista encadeada simples em Python

Quantidade de visualizações: 1157 vezes
Nesta dica mostrarei como podemos escrever um método remover_final() que remove e retorna o nó no final de uma lista encadeada simples em Python, ou seja, excluí o último nó da lista.

É importante observar que o método exclui o último nó e o retorna completo, inclui o valor que está incluído nele. Se a lista estiver vazia o método retorna o valor None para indicar lista vazia.

Vamos começar então com o código para a classe No da lista singularmente ligada (que salvei em um arquivo no_lista_singularmente_ligada.py):

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

# classe No para uma lista singularmente encadeada ou
# ligada - Singly Linked List
class No:
  # construtor da classe No
  def __init__(self, info, proximo):
    self.info = info
    self.proximo = proximo

  # método que permite definir o conteúdo do nó
  def set_info(self, info):
    self.info = info

  # método que permite obter a informação de um nó 
  def get_info(self):
    return self.info

  # método que permite definir o campo próximo deste nó
  def set_proximo(self, proximo):
    self.proximo = proximo

  # método que permite obter o campo próximo deste nó
  def get_proximo(self):
    return self.proximo

  # retorna True se este nó apontar para outro nó
  def possui_proximo(self):
    return self.proximo != None

Veja que o código para a classe Nó não possui muitas firulas. Temos apenas um campo info, que guardará o valor do nó, e um campo próximo, que aponta para o próximo nó da lista, ou null, se este for o único nó ou o último nó da lista ligada.

Veja agora o código para a classe ListaLigadaSimples (lista_ligada_simples.py), com os métodos inserir_inicio(), remover_final() e exibir():

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

# importa a classe No
from no_lista_singularmente_ligada import No

# classe ListaLigadaSimples   
class ListaLigadaSimples:
  # construtor da classe
  def __init__(self):
    self.inicio = None # nó inicial da lista

  # método que deleta um nó no final de uma lista ligada
  # este método retorna o nó excluído
  def remover_final(self):
    # a lista está vazia?  
    if self.inicio == None:
      return None
    else:
      # vamos excluir e retornar o primeiro nó da lista
      removido = self.inicio
      
      # a lista possui apenas um nó?
      if self.inicio.get_proximo() == None:
        # a lista agora ficará vazia
        self.inicio = None
      else:
        # começamos apontando para o início da lista   
        no_atual = self.inicio
        no_anterior = self.inicio

        # enquanto o próximo do nó atual for diferente de nulo
        while no_atual.get_proximo() != None:
          # avançamos o nó anterior
          no_anterior = no_atual
          # saltamos para o próximo nó
          no_atual = no_atual.get_proximo()

        # na estamos na posição de exclusão
        removido = no_atual
        no_anterior.set_proximo(None)
    
    # retorna o nó removido
    return removido

  # método que permite inserir um novo nó no início da lista
  def inserir_inicio(self, info):
    # cria um novo nó contendo a informação e que
    # não aponta para nenhum outro nó
    novo_no = No(info, None)
    
    # a lista ainda está vazia?
    if self.inicio == None:
      # o novo nó será o início da lista  
      self.inicio = novo_no
    else:
      # o novo nó aponta para o início da lista
      novo_no.set_proximo(self.inicio)
      # o novo nó passa a ser o início da lista
      self.inicio = novo_no


  # método que permite exibir todos os nós da lista
  # ligada simples (lista singularmente encadeada)
  def exibir(self):
    # aponta para o início da lista
    no_atual = self.inicio
    # enquanto o nó não for nulo
    while no_atual != None:
      # exibe o conteúdo do nó atual  
      print(no_atual.get_info())
      # pula para o próximo nó
      no_atual = no_atual.get_proximo()

E agora o código main() que insere alguns valores no início da nossa lista singularmente encadeada e testa o método remover_final():

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

# importa a classe ListaLigadaSimples
from lista_singularmente_ligada import ListaLigadaSimples

# método principal  
def main():
  # cria uma nova lista encadeada simples
  lista = ListaLigadaSimples()

  print("Insere o valor 12 no início da lista")
  lista.inserir_inicio(12)
  print("Conteúdo da lista: ")
  lista.exibir()
  print("Insere o valor 30 no início da lista")
  lista.inserir_inicio(30)
  print("Conteúdo da lista: ")
  lista.exibir()
  print("Insere o valor 27 no início da lista")
  lista.inserir_inicio(27)
  print("Conteúdo da lista: ")
  lista.exibir()

  print("Remove um nó no final da lista")
  removido = lista.remover_final()
  if removido == None:
    print("Não foi possível remover. Lista vazia")
  else:
    print("Nó removido:", removido.get_info())  
  print("Conteúdo da lista: ")
  lista.exibir()

if __name__== "__main__":
  main()

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

c:\estudos_python>python estudos.py
Insere o valor 12 no início da lista
Conteúdo da lista:
12
Insere o valor 30 no início da lista
Conteúdo da lista:
30
12
Insere o valor 27 no início da lista
Conteúdo da lista:
27
30
12
Remove um nó no final da lista
Nó removido: 12
Conteúdo da lista:
27
30


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

Serviços preliminares e instalações provisórias

Precisa-se produzir 600.000 m3 de concreto para a construção de uma barragem no prazo de 3 (três) anos. Para isso, as centrais de concreto deverão produzir durante 2.676,63 h/ano. A alternativa que especifica a capacidade da central de concreto que deverá ser utilizada na obra é (caso não encontre valor igual à capacidade disponível no mercado, considere a de valor imediatamente superior):

A) 45 m3/h.

B) 30 m3/h.

C) 130 m3/h.

D) 100 m3/h.

E) 80 m3/h.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais

Água Fria: Sistemas de distribuição

O golpe de aríete é um pico de pressão causado por uma alteração súbita na velocidade da vazão na tubulação. Esse picos de pressão são frequentemente acompanhados por um grande ruído na tubulação. Esse ruído provocado pelos golpes sucessivos não é prejudicial, causando apenas desconforto aos usuários, mas o choque hidráulico pode causar rompimento de tubulações (caso a pressão de ruptura seja ultrapassada), microfissuramento de tubulações plásticas que podem evoluir para trincas e fissuras e enfraquecimento de juntas, dando origem a vazamentos. Assinale a alternativa que representa uma forma de prevenir ou atenuar o Golpe de Aríete em uma rede de tubulações.

A) Evitar o fechamento brusco de válvulas e registros.

B) Aumentar a velocidade de escoamento.

C) Projetar a tubulação evitando trechos curtos, preferir trechos longos conduzindo água diretamente a válvulas e torneiras.

D) Instalar todas as válvulas de descarga em uma única coluna de distribuição.

E) O modelo de válvula de descarga utilizada não ameniza as ondas de pressão causadas pelo seu fechamento.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fundações

Fundações diretas ou rasas

As fundações rasas são executadas nas camadas mais superficiais do solo, geralmente em profundidades inferiores a 2m e são utilizadas comumente em obras de pequeno ou médio porte.

De acordo com a norma ABNT NBR 6122: 2010 (Projeto e execução de fundações), no que se refere às fundações superficiais rasas ou diretas, assinale a alternativa correta.

A) No dimensionamento de fundação superficial solicitada por carga excêntrica, a área comprimida deve ser de, no mínimo, dois terços da área total da fundação.

B) Levando em consideração o custo-benefício de uma obra, recomenda-se que a profundidade mínima para assentamento de uma sapata seja de 1m.

C) As partes da fundação rasa em contato com o solo devem ser concretadas sobre um lastro de concreto estrutural igual a 2,5cm de espessura.

D) No caso de fundações próximas, porém situadas em cotas diferentes, a fundação situada em cota mais alta deve sempre ser executada primeiro.

E) As sapatas isoladas não devem ter dimensões em planta inferiores a 1m. Se esse critério não puder ser utilizado, deve-se adotar outro tipo de fundação.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Python

Qual das formas abaixo é usada para criar uma LIST em Python?

A) valores = {5, 1, 9, 4}

B) valores = [5, 1, 9, 4]

C) valores = (5, 1, 9, 4)

D) valores = [5.. 1.. 9.. 4]

E) valores = list[5, 1, 9, 4]
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais

Dimensionamento de Redes de Distribuição de Água

Qual o número de habitantes se deve atingir para que um bloco populacional que hoje é atendido pela tubulação de 150 mm de diâmetro, e cada habitante consome em média 300 L/dia, tendo uma vazão no sistema de 6,5 L/s, ao qual ainda consegue atender bem atualmente? Busque consultar a tabela da norma ABNT que indica a vazão máxima para cada diâmetro de tubulação.



A) 5000 habitantes

B) 5520 habitantes

C) 3000 habitantes

D) 652 habitantes

E) 2256 habitantes
Verificar Resposta Estudar Cards Todas as Questões

Desafios, Exercícios e Algoritmos Resolvidos de Python

Veja mais Dicas e truques de Python

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

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



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