Você está aqui: Python ::: Dicas & Truques ::: HTTP Web Server

Como criar um servidor web em Python usando as classes BaseHTTPRequestHandler e HTTPServer

Quantidade de visualizações: 544 vezes
Nesta dica mostrarei como criar um web server em Python, ou seja, o nosso próprio servidor web. Para isso nós vamos criar uma classe ServidorWeb que herda de BaseHTTPRequestHandler, que nos fornece todos os métodos necessários para tratar requisições HTTP, tais como GET e POST.

Note que definir o nome do host como "localhost" e a porta como "8080".

Veja o código completo para o nosso web server em Python:

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

# precisamos importar os objetos BaseHTTPRequestHandler e HTTPServer
# do módulo http.server
from http.server import BaseHTTPRequestHandler, HTTPServer
# precisamos também do módulo time
import time

# vamos criar a classe ServidorWeb, que herda de
# BaseHTTPRequestHandler
class ServidorWeb(BaseHTTPRequestHandler):
  # vamos implementar o método que responde às requisições GET
  def do_GET(self):
    self.send_response(200)
    self.send_header("Content-type", "text/html")
    self.end_headers()
    self.wfile.write(bytes("<html><head><title>Meu Servidor Web</title></head>", 
      "utf-8"))
    self.wfile.write(bytes("<p>Requsição: %s</p>" % self.path, 
      "utf-8"))
    self.wfile.write(bytes("<body>", "utf-8"))
    self.wfile.write(bytes("<p>Exemplo de Web Server em Python</p>",
      "utf-8"))
    self.wfile.write(bytes("</body></html>", "utf-8"))

# função principal do programa
def main():
  # agora criamos um objeto HTTPServer
  host = "localhost"
  porta = 8080
  servidorWeb = HTTPServer((host, porta), ServidorWeb)
  print("Servidor iniciado em http://%s:%s" % (host, porta))

  # tentamos levantar o servidor
  try:
    servidorWeb.serve_forever()
  except KeyboardInterrupt:
    pass

  # liberamos o servidor web
  servidorWeb.server_close()
  print("O servidor web foi parado.")
  
if __name__== "__main__":
  main()

Ao executar este código você verá a seguinte mensagem:

Servidor iniciado em http://localhost:8080

A partir daí você pode abrir o seu navegador neste endereço e já verá a página web que definimos no corpo do método do_GET() da classe ServidorWeb. Agora é só explorar as dicas dessa seção para aprender ainda mais sobre redes, soquetes e servidores web usando a linguagem Python.

Link para compartilhar na Internet ou com seus amigos:

Python ::: NumPy Python Library (Biblioteca Python NumPy) ::: Arrays e Matrix (Vetores e Matrizes)

Como multiplicar um vetor ou uma matriz por um escalar no NumPy do Python - Python NumPy para Engenharia

Quantidade de visualizações: 4208 vezes
Esta dica de Python e NumPy é direcionada, principalmente, aos estudantes de Engenharia Civil, que se deparam, logo no início do curso, com o estudo da Geometria Analítica e gostariam de entender melhor a multiplicação de vetores por um escalar. Lembre-se de que um escalar é um valor único, enquanto vetores e matrizes são estruturas que guardam vários valores ao mesmo tempo.

Nosso primeiro exemplo será feito em cima de um vetor com os seguintes valores: [3, -5, 4, 1, 9]. O escalar usado será o valor 2, ou seja, temos que multiplicar cada valor no vetor pelo valor 2 e, dessa forma, obtermos um novo vetor.

Veja como a linguagem Python facilita esta operação:

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

# importamos a bibliteca NumPy
import numpy as np

def main():
  # declara e cria o vetor
  vetor = np.array([3, -5, 4, 1, 9])
  
  # agora vamos multiplicar este vetor pelo escalar 2
  escalar = 2
  novoVetor = vetor * escalar

  # vamos exibir o resultado
  print("Vetor inicial: ", vetor)
  print("Valor do escalar: ", escalar)
  print("Novo vetor: ", novoVetor)

if __name__== "__main__":
  main()

Este código Python vai gerar o seguinte resultado:

Vetor inicial: [3 -5 4 1 9]
Valor do escalar: 2
Novo vetor: [6 -10 8 2 18]

Veja agora como podemos efetuar a mesma operação em uma matriz de 2 linhas e 3 colunas (recorde que, em Python, uma matriz nada mais é que um vetor de vetores, ou seja, cada elemento do vetor contém outro vetor):

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

# importamos a bibliteca NumPy
import numpy as np

def main():
  # declara e cria a matriz
  matriz = np.array([(4, 12, 50), (5, 3, 1), (11, 9, 7)])
  
  # agora vamos multiplicar esta matriz pelo escalar 2
  escalar = 2
  novaMatriz = matriz * escalar

  # vamos exibir o resultado
  print("Matriz inicial: ", matriz)
  print("Valor do escalar: ", escalar)
  print("Nova matriz: ", novaMatriz)

if __name__== "__main__":
  main()

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

Matriz inicial: [[4 12 50]
[5 3 1]
[11 9 7]]
Valor do escalar: 2
Nova matriz: [[8 24 100]
[10 6 2]
[22 18 14]]


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: 10754 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 com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

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 com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

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 com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# 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 ::: Desafios e Lista de Exercícios Resolvidos ::: Pesquisa Operacional

Exercício Resolvido de Python - Programação Linear em Python - Uma madeireira deseja obter 1000kg de lenha, 2000kg de madeira para móveis e 50 metros

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

Este exercício de Python aborda o uso da biblioteca PuLP para resolver um problema de Pesquisa Operacional usando Programação Linear.

Uma madeireira deseja obter 1000kg de lenha, 2000kg de madeira para móveis e 50 metros quadrados de casca de árvore, dispondo de carvalho e pinheiro, sendo que o carvalho gera 40kg de lenha, 150kg de madeira e 3 metros quadrados de casca aproveitável; o pinheiro 100kg de lenha, 60kg de madeira e 8 metros quadrados de casca aproveitável.

Formule o problema, de modo a minimizar os custos, sabendo que cada carvalho custa R$ 1500,00 para a empresa e cada pinheiro R$ 1200,00. Em seguida use a API de Programação Linear do PuLP para resolver o problema e mostrar a melhor solução.

Sua saída deverá ser parecida com:

x: 11.111111
y: 5.5555556
Resposta/Solução:

Antes de passarmos para o código Python é importante entendermos e fazermos a modelagem do problema. Neste exercício busca-se encontrar o custo mínimo. Assim, a nossa função objetivo será dada pela combinação dos preços do carvalho e do pinheiro. Veja:

Zmin = 1500x + 1200y

Aqui nós definimos a variável x para o carvalho e a variável y para o pinheiro.

Agora que já temos a função Z, o próximo passo é analizarmos as restrições. Note que a empresa precisa de 1000kg de lenha. O carvalho gera 40kg de lenha, enquanto o pinheiro gera 100kg. Então nossa primeira restrição é:

R1 = 40x + 100y >= 1000

Para a segunda restrição nós temos que a empresa precisa de 2000kg de madeira. O carvalho gera 150kg de madeira, enquanto o pinheiro gera 60kg. Assim, nossa segunda restrição é:

R2 = 150x + 60y >= 2000

Finalmente, para a terceira restrição, sabemos que a empresa necessita de 50 metros quadrados de casca de árvore. O carvalho gera 3 metros quadrados de casca aproveitável, enquanto o pinheiro gera 8 metros quadradros. Então a terceira restrição é:

R3 = 3x + 8y >= 50

As restrições 4 e 5 dizem que tanto o x quanto o y devem ser maiores ou iguais a zero, e que ambos devem pertencer aos números reais.

Veja agora como usamos os dados de formulação para resolver este exercício usando Python e a biblioteca PuLP:

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

# vamos importar as ferramentas necessárias
from pulp import LpMinimize, LpProblem, LpVariable

# método principal
def main():
  # vamos criar o modelo
  modelo = LpProblem(name="Pesquisa Operacional em Python", sense=LpMinimize)

  # agora inicializamos as variáveis de decisão
  x = LpVariable(name="x", lowBound=0)
  y = LpVariable(name="y", lowBound=0)

  # vamos adicionar as restrições de acordo com a formulação do problema
  modelo += (40 * x + 100 * y >= 1000, "R1")
  modelo += (150 * x + 60 * y >= 2000, "R2")
  modelo += (3 * x + 8 * y >= 50, "R3")

  # definimos a função objetivo e a adicionamos ao modelo
  funcao_objetivo = 1500 * x + 1200 * y
  modelo += funcao_objetivo

  # e tentamos resolver o problema
  modelo.solve()
  
  # assumindo que o problema foi resolvido com sucesso, vamos
  # mostrar os valores das variáveis x e y
  for var in modelo.variables():
    print(f"{var.name}: {var.value()}")

if __name__== "__main__":
  main()

Note como o PuLP nos deu o custo mínimo de 23333.33 para atingir o objetivo desejado pela madeireira.


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: 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á 46 usuários muito felizes estudando em nosso site.