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 ::: Dicas & Truques ::: Lista (List)

Ordenando uma lista de inteiros usando uma função de comparação

Quantidade de visualizações: 7994 vezes
# -*- coding: UTF-8 -*-

"""
  Este exemplo mostra como ordenar uma
  lista de inteiros usando uma função
  de comparação
"""

# define a função a ser usada na comparação
def maior(x, y):
  if x > y:
    return 1
  elif x == y:
    return 0
  else:
    return -1

# cria uma lista de inteiros
valores = [2, 5, 12, 2, 3, 32, 18]

# exibe a lista na ordem original
print valores

# ordena a lista
valores.sort(maior)

# exibe a lista ordenada
print valores


Link para compartilhar na Internet ou com seus amigos:

Python ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas

Como calcular o comprimento da hipotenusa em Python dadas as medidas do cateto oposto e do cateto adjascente

Quantidade de visualizações: 1587 vezes
Nesta dica mostrarei como é possível usar a linguagem Python para retornar o comprimento da hipotenusa dadas as medidas do cateto oposto e do cateto adjascente. Vamos começar analisando a imagem a seguir:



Veja que, nessa imagem, eu já coloquei os comprimentos da hipotenusa, do cateto oposto e do cateto adjascente. Para facilitar a conferência dos cálculos, eu coloquei também os ângulos theta (que alguns livros chamam de alfa) e beta já devidamente calculados.

Então, sabendo que o quadrado da hipotenusa é igual à soma dos quadrados dos catetos (Teorema de Pitógoras):

\[c^2 = a^2 + b^2\]

Tudo que temos a fazer a converter esta fórmula para código Python. Veja:

----------------------------------------------------------------------
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 importar o módulo Math
import math as math

def main():
  a = 20 # medida do cateto oposto
  b = 30 # medida do cateto adjascente
  
  # agora vamos calcular o comprimento da hipotenusa
  c = math.sqrt(math.pow(a, 2) + math.pow(b, 2))
 
  # e mostramos o resultado
  print("O comprimento da hipotenusa é: %f" % c)
  
if __name__== "__main__":
  main()

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

O comprimento da hipotenusa é: 36.055513

Como podemos ver, o resultado retornado com o código Python confere com os valores da imagem apresentada.


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

Como formatar inteiros com uma determinada quantidade de zeros à esquerda usando Python

Quantidade de visualizações: 11155 vezes
Nesta dica eu mostro como formatar um valor inteiro com uma determinada quantidade de zeros à sua esquerda. Note que aqui eu estou combinando a função print() com o operador de módulo (%) para indicar os valores que serão formatados.

Esta técnica foi muito usada na época do Python 2.5 e ainda está disponível no Python 3.0 (e creio que deverá continuar por muito tempo ainda).

Veja o trecho de código completo:

----------------------------------------------------------------------
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():
  valor1 = 343
  valor2 = 3
 
  # exibirá 000342
  print("O valor é %06d" % (valor1))
 
  # exibirá 0342 e 00000003
  print("Os valor sao %04d e %08d" % (valor1, valor2))
  
if __name__== "__main__":
  main()

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

O valor é 000343
Os valor são 0343 e 00000003


Python ::: Dicas & Truques ::: Data e Hora

Como adicionar dias à uma data em Python usando a função timedelta() da classe datetime

Quantidade de visualizações: 8970 vezes
Nesta dica mostrarei como é possível usar o método timedelta() da classe datetime do Python para adicionar um determinado número de dias a uma data. O truque aqui é fornecer apenas o dia para o método timedelta(), obter o resultado e somá-lo com a data que já temos.

Veja o código completo para o 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 
----------------------------------------------------------------------

import datetime

# função principal do programa
def main():
  # dias a serem adicionados
  quant_dias = 2
 
  # Obtém a data de hoje
  hoje = datetime.date.today()
  print("Hoje é:", hoje)
 
  # Adiciona dias à data
  dias = datetime.timedelta(days=quant_dias)
  hoje = hoje + dias
 
  # Exibe o resultado
  print("Daqui à", quant_dias, "dias será", hoje)
 
if __name__== "__main__":
  main()

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

Hoje é: 2021-03-11
Daqui à 2 dias será 2021-03-13


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

Como corrigir o problema da divisão com inteiros em Python (versões anteriores a 3.0)

Quantidade de visualizações: 10782 vezes
A divisão em Python (na versão 2.5), quando feita com operandos do tipo inteiro, resultará em um número inteiro, ou seja, o resultado será arredondado para o menor inteiro mais próximo. Veja:

----------------------------------------------------------------------
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 
----------------------------------------------------------------------

v1 = 5
v2 = 2
res = v1 / v2
print res

Aqui fica claro que o resultado deveria ser 2,5. Porém, ao exibirmos o valor da variável res, vemos que ela armazena 2. Veja agora este novo 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 
----------------------------------------------------------------------

v1 = 5.0
v2 = 2
res = v1 / v2
print res

Agora o resultado é o que esperamos: 2,5. Isso aconteceu porque um dos operandos é um valor do tipo ponto-flutuante. Dessa forma, o interpretador fará a promoção do outro operando (de inteiro para ponto-flutuante) e o comportamento do operador de divisão será o correto.

Então lembre-se: divisão por inteiros, resultado também em inteiro. Se não é isso que deseja, faça com que pelo menos um dos operandos seja do tipo ponto-flutuante.

Existe uma forma de forçar o interpretador a se comportar de forma correta também com inteiros. Veja:

----------------------------------------------------------------------
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 
----------------------------------------------------------------------

# força o novo comportamento do operador
# de divisão
from __future__ import division
 
v1 = 5
v2 = 2
res = v1 / v2
print res

Agora o resultado será 2,5. A chave para isso está na linha:

from __future__ import division

Esta linha importa a nova forma de divisão para seus programas Python anteriores à versão 3.0.


Python ::: Flask Micro Framework ::: Rotas e Roteamento

Como criar rotas em suas aplicações Flask usando o decorador @app.route() - Tutorial Flask para iniciantes

Quantidade de visualizações: 1551 vezes
Aplicações web modernas usam uma técnica chamada roteamento nomeado, ou, na linguagem do pessoal do SEO, URLs amigáveis. Isso quer dizer que, em vez de termos URLS do tipo /livro.php?id_livro=39 nós temos /livro/39.

Neste modelo de roteamento, livro é o nome de uma função Python que será chamada quando o usuário acessar este endereço, e 39 será o argumento passado para o método.

Em Flask, as URLs são associadas às funções Python por meio do decorador @app.route(). Veja uma aplicação Flask completa que possui um método index() que é chamado quando o usuário acessa a raiz da aplicaçã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 importar a biblioteca Flask
from flask import Flask
 
# função principal do programa
def main():
  # vamos criar a aplicação Flask
  app = Flask(__name__)
 
  # definimos a rota para a função index()
  @app.route("/")
  def index():
    return "Este é o método index()"

  # e iniciamos a aplicação web na porta 5000
  app.run(port=5000, debug=True)

if __name__== "__main__":
  main()

Note que a nossa aplicação Flask estará disponível na porta 5000. Assim, ao acessar o endereço http://127.0.0.1:5000 nós teremos o seguinte resultado:

Este é o método index()

Veja agora como criar uma URL /listar_usuarios e associá-la a uma função listar_usuarios():

----------------------------------------------------------------------
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 importar a biblioteca Flask
from flask import Flask
 
# função principal do programa
def main():
  # vamos criar a aplicação Flask
  app = Flask(__name__)
 
  # definimos a rota para a função index()
  @app.route("/")
  def index():
    return "Este é o método index()"

  # definimos a rota para a função listar_usuarios()
  @app.route("/listar_usuarios")
  def listar_usuarios():
    return "Este é o método para listar os usuários"  

  # e iniciamos a aplicação web na porta 5000
  app.run(port=5000, debug=True)

if __name__== "__main__":
  main()

Agora, experimente acessar o endereço http://127.0.0.1:5000/listar_usuarios e veja o resultado. Se tudo estiver correto, você verá o seguinte resultado:

Este é o método para listar os usuários

Em mais dicas desta seção você verá como criar URLs com parâmetros e passá-los para suas funções Python.


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

Exercício Resolvido de Python - Como calcular o restante de um salário após o pagamento de duas contas com juros

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

Cintia acaba de receber seu salário mas precisa pagar duas contas atrasadas. Por causa do atraso, ela deverá pagar multa de 2% sobre cada conta. Faça um programa que leia o valor do salário e das duas contas e que calcule e mostre quanto restará do salário de Cintia.

Sua saída deverá ser parecida com:

Informe o salário: 1350
Valor da primeira conta: 140
Valor da segunda conta: 300

Total das contas sem juros: 440.0
Total dos juros: 8.8
Total das contas com juros: 448.8
Sobra do salário: 901.2
Resposta/Solução:

Veja a resolução comentada deste exercício usando 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 
----------------------------------------------------------------------

# método principal
def main():
  # vamos pedir que o usuário informe o valor do salário e das duas contas
  salario = float(input("Informe o salário: "))
  conta1 = float(input("Valor da primeira conta: "))
  conta2 = float(input("Valor da segunda conta: "))
    
  # total a ser pago nas duas contas sem os juros
  total_contas = conta1 + conta2
  # calcula os juros
  total_juros = total_contas * 0.02
  # total a ser pago com juros
  total_contas_com_juros = total_contas + total_juros
  # sobra do salário
  sobra_salario = salario - total_contas_com_juros
    
  # mostra os resultados
  print("\nTotal das contas sem juros: {0}".format(total_contas))
  print("Total dos juros: {0}".format(total_juros))
  print("Total das contas com juros: {0}".format(total_contas_com_juros))
  print("Sobra do salário: {0}".format(sobra_salario))
  
if __name__== "__main__":
  main()



Python ::: Dicas & Truques ::: Strings e Caracteres

Como verificar se uma string contém apenas caracteres de espaços em Python usando a função isspace()

Quantidade de visualizações: 11811 vezes
Este exemplo mostra como como usar a função isspace() para verificar se uma string contém apenas caracteres de espaço. Se qualquer caractere, diferente do espaço, for encontrado, a função retorna False.

----------------------------------------------------------------------
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():
  # uma frase contendo apenas espaços
  frase = "      "

  # vamos verificar se a string contém apenas espaços
  if frase.isspace():
    print("A string contém apenas espaços")
  else:
    print("A string não contém apenas espaços")

if __name__== "__main__":
  main()

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

A string contém apenas espaços.


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)


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

Sistema domiciliar de abastecimento de água

Uma instalação hidrossanitária será construída numa residência. Ela apresenta dois banheiros, uma cozinha e uma área de serviços. Cada banheiro tem uma bacia com caixa de descarga, um chuveiro elétrico e um lavatório. A cozinha apresenta duas pias, e a área de serviços tem um tanque e duas torneiras de uso geral.



Com base nesses dados, qual é vazão estimada de água fria em função dos pesos atribuídos às peças de utilização, em litros por segundo?

A) 0,57.

B) 0,65.

C) 0,68.

D) 0,78.

E) 0,91
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 Engenharia Civil - Estruturas de Aço e Madeira

Ações em estruturas: apresentação dos principais carregamentos na análise de estruturas convencionais

As variações de temperatura causam ações nas estruturas. Tanto isso é verdade que é recomendado, em lajes com área grande, as tão conhecidas juntas de dilatação para evitar que ocorram fissuras no concreto devido às deformações causadas pelo carregamento térmico. A ação devido às variações de temperatura é classificada como?

A) Ação acidental direta.

B) Ação permanente indireta.

C) Ação permanente direta.

D) Ação acidental indireta.

E) Ação excepcional.
Verificar Resposta Estudar Cards Todas as Questões

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

O projeto de instalação hidrossanitária

É fundamental que o projeto hidrossanitário esteja de acordo com as legislações vigentes a fim de promover, principalmente, a segurança.

De modo geral, um bom projeto hidrossanitário deve ser dimensionado objetivando atender a:

A) demandas da edificação em um período de, no máximo, 10 anos.

B) demandas da edificação em um período de até 10-20 anos.

C) demandas da edificação em um período de até 20-30 anos.

D) demandas da edificação em um período de até 40-50 anos.

E) demandas da edificação em um período de mais de 50 anos.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em

Resistência do concreto

Quando não forem feitos ensaios e não existirem dados mais precisos sobre o concreto usado na idade de 28 dias, pode-se estimar o valor do seu módulo de elasticidade utilizando como base os critérios expostos no item 8.2.8 da NBR 6118/2014 - Projeto de Estruturas de Concreto - Procedimento.

Determine qual seria o módulo de elasticidade estimado para um concreto com fck = 60 MPa, considerando o uso do basalto como agregado graúdo.

A) Eci = 47,4 GPa.

B) Eci = 49,5 GPa.

C) Eci = 49,9 GPa.

D) Eci = 52,1 GPa.

E) Eci = 60 GPa.
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á 36 usuários muito felizes estudando em nosso site.