Introdução
Olá, muito obrigado por ter acessado esse guia, ele foi pensado e desenvolvido com muito carinho com o objetivo de ajudar você que está começando na programação.
Com esse guia você vai ser capaz de dar os seus primeiros passos práticos no mundo do Python.
Não esquece de me seguir no Instagram @umporcentoprog que lá eu trago conteúdo educacional de programação todos os dias, e é por lá que eu solto esses guias gratuitos, como esse que você está lendo!
1 - Introdução ao Python
1.1 - O que é Python e por que aprender?
Python é uma linguagem de programação de alto nível, interpretada e extremamente versátil. É usada em diversas áreas como desenvolvimento web, ciência de dados, inteligência artificial, automação, entre outras. Para entender melhor, vamos fazer uma analogia:
Imagine que você está em uma cozinha
. Python seria como aquele canivete suíço que tem uma infinidade de funcionalidades e é útil em várias situações. Você pode usar uma ferramenta para cortar legumes, outra para abrir uma garrafa, e até mesmo uma pinça para pegar algo com precisão. Assim como o canivete, Python oferece uma variedade de "ferramentas" que permitem resolver problemas de diferentes naturezas.
1.1.1 - Principais características do Python
Sintaxe Simples: Python tem uma sintaxe que se assemelha ao inglês, tornando-o mais fácil de aprender e ler. É como se estivesse lendo um manual de instruções, ao invés de tentar decifrar um código secreto.
Grande Comunidade e Ecossistema: Como Python é popular, há uma grande comunidade de programadores prontos para ajudar, e muitos recursos disponíveis. Isso significa que sempre haverá alguém para te ajudar quando você travar em alguma coisa
.
Bibliotecas e Frameworks Poderosos: Python tem uma vasta quantidade de bibliotecas e frameworks, como o
.
numpy
para cálculo numérico, pandas
para manipulação de dados, e django
para desenvolvimento web. É como ter um arsenal de ferramentas prontas para qualquer situação que você enfrentar 1.2 - Instalação do Python e configuração do ambiente
Antes de começar a programar, precisamos instalar o Python no seu computador. Siga os passos abaixo para configurar seu ambiente:
1.2.1 - Instalando o Python
Acesse o site oficial do Python: python.org
Baixe a versão mais recente para o seu sistema operacional (Windows, macOS ou Linux).
Durante a instalação, não se esqueça de marcar a opção "Add Python to PATH"! Isso permitirá que você execute o Python diretamente no terminal.
1.2.2 - Verificando a instalação
Abra o terminal (no Windows, use o Prompt de Comando ou Powershell; no macOS e Linux, o Terminal) e digite o seguinte comando:
Shell
Copiar
python --version
Se tudo estiver certo, a versão do Python será exibida. Você também pode usar
python3 --version
em sistemas baseados em UNIX, como Linux e macOS.CTRL + L
para limpar o terminal quando ele estiver cheio de informações.1.3 - Primeiro programa em Python: "Hello, World!"
É hora de colocar a mão na massa! Vamos criar nosso primeiro programa em Python: o famoso Hello, World!
. Ele é considerado o "primeiro passo" em qualquer linguagem de programação, e serve para garantir que o ambiente de desenvolvimento está funcionando corretamente.
Abra seu editor de texto (pode ser o VSCode, PyCharm ou até o bloco de notas, se preferir) e escreva o seguinte código:
Python
Copiar
print("Hello, World!")
Agora, salve o arquivo com o nome
hello_world.py
e execute no terminal com o comando:Shell
Copiar
python hello_world.py
Se tudo estiver certo, você verá o seguinte no terminal:
Plain Text
Copiar
Hello, World!
1.4 - Como executar scripts Python
Existem várias maneiras de executar um script Python, e conhecer todas elas é importante para aumentar a sua eficiência como programador.
1.4.1 - Executando pelo Terminal
Como você acabou de ver, podemos executar um script diretamente pelo terminal. Basta navegar até o diretório onde o arquivo está salvo e usar o comando:
Shell
Copiar
python nome_do_seu_arquivo.py
1.4.2 - Executando pelo seu Editor de Código
A maioria dos editores de código como VSCode, PyCharm ou Jupyter Notebook permite que você execute o código diretamente na interface do programa. Basta abrir o arquivo e clicar no botão de "Run"
.
1.4.3 - Executando interativamente
Se você quer testar pequenos trechos de código, pode usar o modo interativo do Python. Basta digitar
python
no terminal, e você terá um ambiente onde pode testar comandos rapidamente, como uma calculadora.Exemplo:
Python
Copiar
>>> 2 + 2
4
1.4.4 - Jupyter Notebooks
Se você pretende trabalhar com Ciência de Dados ou Análise de Dados, vale a pena aprender a usar o Jupyter Notebook. Ele permite que você crie "cadernos" onde pode combinar código Python, texto explicativo, imagens e gráficos. É uma ferramenta poderosa!
2 - Fundamentos da Linguagem
2.1 - Tipos de dados básicos (int, float, str, bool)
O Python possui tipos de dados essenciais que formam a base da linguagem. Vamos entendê-los e como eles se comportam.
2.1.1 - Inteiros (int)
Os números inteiros são aqueles sem casas decimais, como
1
, 42
, -10
. Em Python, eles são representados pelo tipo int
.Python
Copiar
meu_inteiro = 10
print(type(meu_inteiro)) # <class 'int'>
2.1.2 - Pontos Flutuantes (float)
Os
floats
são números com casas decimais. Por exemplo, 3.14
, 0.5
e -7.0
. Eles são úteis para cálculos mais precisos, como medições e valores monetários.Python
Copiar
meu_float = 3.14
print(type(meu_float)) # <class 'float'>
Imagine que você está medindo a quantidade de água em um copo
. Você pode ter 150 ml ou 150.5 ml. O primeiro é um
int
, e o segundo é um float
.2.1.3 - Strings (str)
Uma
string
é uma sequência de caracteres, usada para representar texto. Pode ser qualquer coisa que você coloca entre aspas simples ' '
ou duplas " "
.Python
Copiar
meu_texto = "Olá, Python!"
print(type(meu_texto)) # <class 'str'>
2.1.4 - Booleanos (bool)
O tipo
bool
é usado para representar valores verdadeiros ou falsos, com apenas dois possíveis valores: True
ou False
. Eles são usados em estruturas de controle de fluxo, como condicionais.Python
Copiar
meu_bool = True
print(type(meu_bool)) # <class 'bool'>
2.2 - Variáveis e tipos de atribuição
As variáveis são como "caixas" onde você armazena valores
. Elas permitem que você manipule dados de forma dinâmica durante a execução do seu programa.
2.2.1 - Como declarar variáveis
Você não precisa especificar o tipo da variável, o Python é dinamicamente tipado. Basta atribuir um valor com
=
.Python
Copiar
idade = 25 # A variável 'idade' agora contém um inteiro
nome = "Maria" # A variável 'nome' agora contém uma string
2.2.2 - Regras para nomear variáveis
Devem começar com uma letra ou
_
(underline).Não podem começar com um número.
Não podem conter espaços ou caracteres especiais como
@
, #
, !
.São case-sensitive (
idade
e Idade
são variáveis diferentes).25
, e a etiqueta "nome" ao texto "Maria"
.2.3 - Entrada e saída de dados (input e print)
A comunicação entre você e seu programa é feita com as funções
input()
e print()
.2.3.1 - Saída de dados com print()
A função
print()
é usada para exibir informações na tela.Python
Copiar
print("Olá, Mundo!")
2.3.2 - Entrada de dados com input()
A função
input()
permite que o usuário insira dados. O valor inserido é sempre do tipo string
.Python
Copiar
nome = input("Digite seu nome: ")
print("Bem-vindo, " + nome + "!")
input()
usando int()
ou float()
.Python
Copiar
idade = int(input("Digite sua idade: "))
print("Você tem", idade, "anos.")
2.4 - Operadores aritméticos, relacionais e lógicos
2.4.1 - Operadores aritméticos
Esses operadores permitem realizar operações matemáticas:
2.4.2 - Operadores relacionais
Esses operadores comparam valores e retornam
True
ou False
:2.4.3 - Operadores lógicos
São usados para combinar expressões:
Exercícios
Crie um programa que solicite ao usuário que insira seu nome e idade. Em seguida, exiba uma mensagem dizendo:
"Olá, [nome], você tem [idade] anos!"
.Crie um programa que leia dois números do usuário e exiba a soma, subtração, multiplicação e divisão desses números.
Crie um programa que solicite ao usuário três notas e calcule a média aritmética delas. Exiba se o aluno está "Aprovado" (média ≥ 7) ou "Reprovado".
Crie um programa que leia um número e exiba se ele é par ou ímpar usando o operador
%
.3 - Estruturas de Controle de Fluxo
3.1 - Condicionais (if, elif, else)
As estruturas condicionais permitem que o programa tome decisões com base em certas condições, assim como nós fazemos diariamente. Imagine que você está planejando sair, e decide se vai levar um guarda-chuva ☔️. Se estiver chovendo, você leva; se não, deixa em casa. As condicionais no Python funcionam da mesma forma.
3.1.1 - A estrutura if
A estrutura
if
é usada para executar um bloco de código se uma condição for verdadeira.Python
Copiar
idade = 18
if idade >= 18:
print("Você é maior de idade.")
3.1.2 - A estrutura else
O
else
especifica o que fazer caso a condição do if
não seja verdadeira.Python
Copiar
idade = 16
if idade >= 18:
print("Você é maior de idade.")
else:
print("Você é menor de idade.")
3.1.3 - A estrutura elif
Se você precisar verificar várias condições, pode usar
elif
(abreviação de "else if"). Pense nele como opções adicionais para o seu "se".Python
Copiar
nota = 8.5
if nota >= 9:
print("Excelente!")
elif nota >= 7:
print("Bom trabalho!")
else:
print("Você precisa melhorar.")
if
, elif
e else
funcionam como as opções que você tem no menu.3.2 - Estruturas de repetição (for e while)
As estruturas de repetição permitem executar um bloco de código várias vezes, o que é útil para evitar repetições desnecessárias.
3.2.1 - Estrutura for
O
for
é usado quando sabemos o número de iterações ou quando queremos percorrer uma sequência (lista, tupla, string, etc.).Python
Copiar
nomes = ["Ana", "Carlos", "Bianca"]
for nome in nomes:
print("Olá,", nome)
3.2.2 - Função range() com for
O
range()
gera uma sequência de números. Ele é muito útil em conjunto com for
.Python
Copiar
for i in range(5): # Imprime os números de 0 a 4
print(i)
for
.3.2.3 - Estrutura while
O
while
é usado quando não sabemos quantas vezes a repetição deve ocorrer, pois ela depende de uma condição ser verdadeira.Python
Copiar
contador = 0
while contador < 5:
print("Contagem:", contador)
contador += 1
while
se tornará falsa em algum momento, ou seu código entrará em um loop infinito!3.3 - Controle de loops (break, continue, pass)
Às vezes, precisamos de mais controle sobre nossos loops. O Python oferece as palavras-chave
break
, continue
e pass
para lidar com essas situações.3.3.1 - break
O
break
encerra o loop imediatamente.Python
Copiar
for numero in range(10):
if numero == 5:
break
print(numero)
# Saída: 0, 1, 2, 3, 4
3.3.2 - continue
O
continue
interrompe a iteração atual e passa para a próxima.Python
Copiar
for numero in range(5):
if numero == 2:
continue
print(numero)
# Saída: 0, 1, 3, 4
3.3.3 - pass
O
pass
é um "placeholder". Não faz nada, mas é útil quando a sintaxe exige que um bloco de código esteja presente.Python
Copiar
for i in range(3):
pass # Futuramente, adicionaremos o código aqui
3.4 - Compreensão de listas (list comprehensions)
A compreensão de listas é uma maneira concisa de criar listas em Python, tornando seu código mais legível e eficiente.
3.4.1 - Sintaxe básica
Python
Copiar
numeros = [x for x in range(5)]
print(numeros) # [0, 1, 2, 3, 4]
3.4.2 - Compreensão de listas com condições
Podemos adicionar condições à compreensão de listas.
Python
Copiar
pares = [x for x in range(10) if x % 2 == 0]
print(pares) # [0, 2, 4, 6, 8]
Exercícios
Escreva um programa que peça ao usuário um número e diga se ele é positivo, negativo ou zero, usando condicionais
if
, elif
e else
.Crie uma lista com os nomes de cinco amigos e, usando um
for
, exiba uma mensagem de saudação para cada um.Escreva um programa que calcule a soma de todos os números pares de 1 a 100 utilizando um loop
for
.Crie um programa que simule uma senha de 4 dígitos. O usuário tem 3 tentativas para acertar. Use um loop
while
e o break
para controlar as tentativas.4 - Estruturas de Dados em Python
4.1 - Listas
As listas são uma das estruturas de dados mais versáteis em Python. Pense nelas como uma prateleira de livros
, onde cada livro ocupa uma posição específica e você pode acessar, adicionar ou remover livros quando quiser.
4.1.1 - Criando listas
Você pode criar uma lista usando colchetes
[]
e separando os elementos por vírgulas.Python
Copiar
minha_lista = [1, 2, 3, "Python", True]
print(minha_lista) # [1, 2, 3, "Python", True]
4.1.2 - Acessando elementos
Para acessar um elemento de uma lista, utilizamos o índice (posição) do item. Lembre-se que a contagem começa em 0.
Python
Copiar
print(minha_lista[0]) # 1
print(minha_lista[3]) # "Python"
Python
Copiar
print(minha_lista[-1]) # True
4.1.3 - Modificando listas
Você pode adicionar, remover ou alterar elementos da lista.
Adicionar: Use
append()
para adicionar um elemento ao final da lista.Python
Copiar
minha_lista.append("Novo Item")
print(minha_lista)
Remover: Use
remove()
para remover um item específico, ou pop()
para remover pelo índice.Python
Copiar
minha_lista.remove("Python")
print(minha_lista)
minha_lista.pop(0) # Remove o primeiro elemento
print(minha_lista)
4.1.4 - Iterando sobre listas
Você pode usar um
for
para percorrer cada item da lista.Python
Copiar
for item in minha_lista:
print(item)
4.2 - Tuplas
As tuplas são similares às listas, mas são imutáveis, ou seja, não podem ser alteradas depois de criadas. Pense nelas como o menu de um restaurante
. Uma vez que o menu está impresso, não é possível alterar as opções sem fazer um novo.
4.2.1 - Criando tuplas
Use parênteses
()
para criar uma tupla.Python
Copiar
minha_tupla = (1, 2, 3, "Python", True)
print(minha_tupla)
4.2.2 - Acessando elementos da tupla
O acesso é feito da mesma forma que em listas, utilizando índices.
Python
Copiar
print(minha_tupla[1]) # 2
4.3 - Conjuntos (sets)
Conjuntos são coleções não ordenadas e sem elementos duplicados. Pense neles como uma caixa de lápis de cor
, onde cada cor aparece apenas uma vez.
4.3.1 - Criando conjuntos
Use chaves
{}
para criar um conjunto.Python
Copiar
meu_conjunto = {1, 2, 2, 3, 4, 4}
print(meu_conjunto) # {1, 2, 3, 4}
4.3.2 - Operações com conjuntos
Você pode realizar operações como união (
|
), interseção (&
) e diferença (-
).Python
Copiar
a = {1, 2, 3}
b = {3, 4, 5}
print(a | b) # União: {1, 2, 3, 4, 5}
print(a & b) # Interseção: {3}
print(a - b) # Diferença: {1, 2}
4.4 - Dicionários
Os dicionários são como um manual de instruções
, onde cada "palavra" tem um "significado". Eles armazenam pares de chave: valor.
4.4.1 - Criando dicionários
Use chaves
{}
e separe os pares com :
.Python
Copiar
meu_dict = {"nome": "Python", "ano": 1991, "tipo": "Linguagem de Programação"}
print(meu_dict)
4.4.2 - Acessando e modificando valores
Você pode acessar um valor utilizando sua chave.
Python
Copiar
print(meu_dict["nome"]) # "Python"
# Modificando
meu_dict["ano"] = 2024
print(meu_dict)
4.4.3 - Métodos úteis de dicionários
keys()
: Retorna todas as chaves.values()
: Retorna todos os valores.items()
: Retorna todos os pares chave-valor.Python
Copiar
print(meu_dict.keys()) # dict_keys(['nome', 'ano', 'tipo'])
print(meu_dict.values()) # dict_values(['Python', 2024, 'Linguagem de Programação'])
4.5 - Operações e métodos com cada estrutura de dados
4.5.1 - Listas
len(lista)
: Retorna o número de elementos.max(lista)
, min(lista)
: Retorna o maior e menor elemento.sort()
: Ordena a lista em ordem crescente.Python
Copiar
lista = [3, 1, 4, 1, 5]
lista.sort()
print(lista) # [1, 1, 3, 4, 5]
4.5.2 - Tuplas
count(valor)
: Conta quantas vezes o valor aparece na tupla.index(valor)
: Retorna o índice da primeira ocorrência do valor.4.5.3 - Conjuntos
add(elemento)
: Adiciona um elemento ao conjunto.remove(elemento)
: Remove um elemento específico.Python
Copiar
meu_conjunto.add(6)
print(meu_conjunto) # {1, 2, 3, 4, 6}
4.5.4 - Dicionários
get(chave)
: Retorna o valor associado à chave, ou None
se a chave não existir.pop(chave)
: Remove a chave e retorna seu valor.Python
Copiar
valor = meu_dict.pop("ano")
print(valor) # 2024
print(meu_dict) # {'nome': 'Python', 'tipo': 'Linguagem de Programação'}
Exercícios
Crie uma lista com os números de 1 a 10 e imprima apenas os números pares.
Crie uma tupla com cinco elementos e tente alterá-los para entender a imutabilidade.
Crie um conjunto a partir de uma lista que contém elementos duplicados e mostre como os duplicados são removidos.
Crie um dicionário que armazene o nome, idade e cidade de uma pessoa e exiba essas informações de forma organizada.
5 - Funções em Python
5.1 - Definindo e chamando funções
As funções são blocos de código reutilizáveis que executam uma tarefa específica. Pense nelas como receitas de cozinha
: você segue um conjunto de instruções para obter um resultado. Em Python, as funções permitem organizar e estruturar seu código, evitando repetições.
5.1.1 - Criando uma função
Você define uma função usando a palavra-chave
def
, seguida do nome da função e parênteses ()
.Python
Copiar
def saudacao():
print("Olá, seja bem-vindo ao mundo do Python!")
Para chamar a função, basta usar seu nome seguido de parênteses:
Python
Copiar
saudacao() # Saída: Olá, seja bem-vindo ao mundo do Python!
5.2 - Parâmetros e argumentos
As funções podem receber parâmetros, que são valores enviados para a função quando ela é chamada, permitindo que ela trabalhe de forma mais dinâmica.
5.2.1 - Funções com parâmetros
Python
Copiar
def saudacao(nome):
print(f"Olá, {nome}, seja bem-vindo!")
Ao chamar a função, você passa o argumento:
Python
Copiar
saudacao("Maria") # Saída: Olá, Maria, seja bem-vindo!
5.2.2 - Parâmetros com valor padrão
Você pode definir um valor padrão para um parâmetro. Se nenhum valor for fornecido, o padrão será usado.
Python
Copiar
def saudacao(nome="Visitante"):
print(f"Olá, {nome}, seja bem-vindo!")
5.3 - Retorno de valores
Uma função pode retornar um valor usando a palavra-chave
return
.Python
Copiar
def soma(a, b):
return a + b
resultado = soma(5, 3)
print(resultado) # Saída: 8
return
é como o garçom entregando seu pedido Vamos finalizar o tópico de funções em Python com a qualidade e profundidade que você espera!
5.4 - Funções anônimas (lambda)
As funções
lambda
são funções anônimas (sem nome) que permitem criar pequenas funções em apenas uma linha. Elas são ideais para tarefas rápidas que não exigem a definição completa de uma função com def
.5.4.1 - Criando uma função lambda
A sintaxe de uma função
lambda
é a seguinte:Python
Copiar
lambda argumentos: expressão
Um exemplo simples seria:
Python
Copiar
dobro = lambda x: x * 2
print(dobro(5)) # Saída: 10
Nesse caso,
lambda x: x * 2
é equivalente a:Python
Copiar
def dobro(x):
return x * 2
5.4.2 - Usando lambda com múltiplos argumentos
Você pode usar funções
lambda
com vários argumentos:Python
Copiar
soma = lambda x, y: x + y
print(soma(3, 4)) # Saída: 7
lambda
como um atalho de teclado. Ela permite realizar a mesma tarefa que uma função comum, mas de forma mais rápida e direta.5.5 - Funções embutidas mais comuns (map, filter, zip, etc.)
Python oferece várias funções embutidas que facilitam a manipulação de coleções de dados, como
map()
, filter()
, e zip()
.5.5.1 - map()
A função
map()
aplica uma função a cada item de um iterável (como uma lista) e retorna um novo iterável com os resultados.Python
Copiar
numeros = [1, 2, 3, 4]
dobrados = list(map(lambda x: x * 2, numeros))
print(dobrados) # Saída: [2, 4, 6, 8]
5.5.2 - filter()
A função
filter()
cria um iterável contendo apenas os itens que atendem a uma condição.Python
Copiar
numeros = [1, 2, 3, 4, 5]
pares = list(filter(lambda x: x % 2 == 0, numeros))
print(pares) # Saída: [2, 4]
5.5.3 - zip()
A função
, onde os dentes de cada lado se unem.
zip()
combina múltiplos iteráveis (listas, tuplas, etc.) em pares. É como fechar o zíper de uma jaqueta Python
Copiar
nomes = ["Ana", "Bruno", "Carlos"]
idades = [25, 30, 35]
combinacao = list(zip(nomes, idades))
print(combinacao) # Saída: [('Ana', 25), ('Bruno', 30), ('Carlos', 35)]
Exercícios
Crie uma função que receba dois números como parâmetros e retorne a soma deles. Em seguida, chame a função com diferentes valores.
Crie uma função que receba uma lista de números e retorne apenas os números pares utilizando a função
filter()
.Crie uma função
lambda
que calcule o quadrado de um número e aplique essa função a uma lista de números usando map()
.Crie uma lista com nomes e outra com notas de 5 alunos. Use a função
zip()
para combinar as duas listas e exiba o nome de cada aluno junto com sua respectiva nota.6 - Trabalhando com Módulos e Pacotes
6.1 - Importando módulos padrão
Módulos são arquivos que contêm definições e implementações de funções, classes e variáveis que você pode reutilizar em diferentes partes do seu código. Python possui muitos módulos padrão que você pode importar para ampliar suas funcionalidades, sem ter que reinventar a roda.
6.1.1 - Importando um módulo
Para importar um módulo, usamos a palavra-chave
import
. Por exemplo, o módulo math
contém funções matemáticas avançadas:Python
Copiar
import math
print(math.sqrt(16)) # Saída: 4.0
6.1.2 - Importando apenas funções específicas
Você também pode importar apenas uma parte do módulo usando
from ... import ...
.Python
Copiar
from math import pi
print(pi) # Saída: 3.141592653589793
6.1.3 - Renomeando módulos
Você pode usar a palavra-chave
as
para renomear um módulo ou função para simplificar seu uso.Python
Copiar
import math as m
print(m.sqrt(25)) # Saída: 5.0
6.2 - Criando seus próprios módulos
Assim como o Python oferece módulos, você também pode criar os seus. Basta criar um arquivo
.py
com funções e variáveis que deseja reutilizar.6.2.1 - Exemplo de módulo personalizado
Crie um arquivo chamado
meu_modulo.py
com o seguinte conteúdo:Python
Copiar
def saudacao(nome):
return f"Olá, {nome}!"
Depois, em outro arquivo Python, você pode importar e usar o módulo:
Python
Copiar
import meu_modulo
print(meu_modulo.saudacao("Maria")) # Saída: Olá, Maria!
6.3 - Instalação e uso de pacotes externos com pip
Python possui um gerenciador de pacotes chamado
pip
que permite instalar e gerenciar pacotes externos. Pacotes são coleções de módulos organizados para resolver problemas específicos.6.3.1 - Instalando um pacote com pip
Para instalar um pacote, basta usar o comando
pip install nome_do_pacote
. Por exemplo, para instalar o pacote requests
, que permite fazer requisições HTTP, use:Shell
Copiar
pip install requests
pip
funcione.6.3.2 - Usando pacotes instalados
Após a instalação, você pode importar o pacote normalmente:
Python
Copiar
import requests
response = requests.get("<https://api.github.com>")
print(response.status_code) # Saída: 200
6.4 - Principais bibliotecas do Python para iniciantes
Existem inúmeras bibliotecas em Python que facilitam o desenvolvimento em diferentes áreas. Aqui estão algumas das mais populares para iniciantes:
NumPy: Trabalhando com arrays e operações matemáticas.
Pandas: Manipulação e análise de dados.
Exercícios
Crie um módulo personalizado chamado
calculadora.py
com funções para somar, subtrair, multiplicar e dividir dois números. Em seguida, importe e use este módulo em outro script.Instale a biblioteca
requests
e use-a para fazer uma requisição GET à API pública https://jsonplaceholder.typicode.com/todos/1
. Exiba o título da resposta.Utilize o módulo
math
para calcular a área de um círculo com raio 7 e exibir o resultado.Crie um script que utilize a biblioteca
random
para gerar 5 números aleatórios entre 1 e 10 e os exiba.7 - Manipulação de Arquivos
Python oferece uma série de ferramentas para ler e escrever em arquivos, o que é extremamente útil para armazenar e processar dados. Pense nos arquivos como cadernos
onde você pode registrar e consultar informações a qualquer momento.
7.1 - Leitura e escrita de arquivos de texto
A manipulação de arquivos de texto em Python é feita utilizando as funções
open()
, read()
, write()
, e close()
.7.1.1 - Abrindo um arquivo
Para abrir um arquivo, usamos a função
open()
, que requer o nome do arquivo e o modo de abertura:'r'
: leitura (read)'w'
: escrita (write) – cria um novo arquivo ou substitui o existente'a'
: adicionar (append) – adiciona conteúdo ao final do arquivo existentePython
Copiar
arquivo = open("exemplo.txt", "w")
arquivo.write("Olá, Python!")
arquivo.close()
7.1.2 - Lendo um arquivo
Para ler o conteúdo de um arquivo, use o método
read()
.Python
Copiar
arquivo = open("exemplo.txt", "r")
conteudo = arquivo.read()
print(conteudo) # Saída: Olá, Python!
arquivo.close()
close()
.7.1.3 - Usando with para manipulação de arquivos
A palavra-chave
with
permite abrir e fechar arquivos de forma automática, tornando o código mais limpo e seguro.Python
Copiar
with open("exemplo.txt", "r") as arquivo:
conteudo = arquivo.read()
print(conteudo)
7.2 - Manipulação de arquivos CSV
Arquivos CSV (Comma-Separated Values) são comumente usados para armazenar dados tabulares. Python possui o módulo
csv
para facilitar a leitura e escrita desses arquivos.7.2.1 - Lendo um arquivo CSV
Python
Copiar
import csv
with open("dados.csv", "r") as arquivo_csv:
leitor = csv.reader(arquivo_csv)
for linha in leitor:
print(linha)
7.2.2 - Escrevendo em um arquivo CSV
Python
Copiar
import csv
dados = [["Nome", "Idade"], ["Ana", 28], ["Carlos", 35]]
with open("dados.csv", "w", newline="") as arquivo_csv:
escritor = csv.writer(arquivo_csv)
escritor.writerows(dados)
7.3 - Uso da biblioteca JSON
O JSON (JavaScript Object Notation) é um formato de armazenamento de dados muito utilizado para comunicação entre sistemas. Python possui o módulo
json
para manipular esses arquivos.7.3.1 - Lendo um arquivo JSON
Python
Copiar
import json
with open("dados.json", "r") as arquivo_json:
dados = json.load(arquivo_json)
print(dados)
7.3.2 - Escrevendo em um arquivo JSON
Python
Copiar
import json
dados = {"nome": "Ana", "idade": 28, "cidade": "São Paulo"}
with open("dados.json", "w") as arquivo_json:
json.dump(dados, arquivo_json)
7.4 - Trabalhando com arquivos binários
Além de arquivos de texto e CSV, você pode manipular arquivos binários, como imagens, arquivos executáveis, entre outros.
7.4.1 - Lendo um arquivo binário
Python
Copiar
with open("imagem.png", "rb") as arquivo_binario:
conteudo = arquivo_binario.read()
print(conteudo)
7.4.2 - Escrevendo em um arquivo binário
Python
Copiar
with open("copia_imagem.png", "wb") as arquivo_binario:
arquivo_binario.write(conteudo)
'rb'
para leitura binária e 'wb'
para escrita binária.
Exercícios
Crie um arquivo de texto chamado
meu_arquivo.txt
e escreva seu nome e idade nele. Depois, leia o arquivo e exiba o conteúdo.Crie um arquivo CSV com os nomes e notas de 5 alunos e, em seguida, leia o arquivo e exiba a média de cada aluno.
Crie um arquivo JSON que armazene informações sobre um produto (nome, preço, quantidade) e leia essas informações do arquivo.
Faça uma cópia de um arquivo de imagem utilizando a manipulação de arquivos binários.
8 - Tratamento de Exceções
O tratamento de exceções é uma parte crucial da programação, pois permite que seu programa lide de forma inteligente com erros que possam ocorrer durante a execução. Em vez de deixar o programa "quebrar", você pode capturar esses erros e tomar ações apropriadas.
8.1 - Introdução a erros e exceções
Erros em Python podem ser classificados em dois tipos:
Erros de Sintaxe: Erros na forma como o código é escrito, impedindo a execução.
Exceções: Erros que ocorrem durante a execução do código, mesmo que a sintaxe esteja correta (por exemplo, dividir por zero).
Exemplo de uma exceção:
Python
Copiar
numero = int(input("Digite um número: "))
print(10 / numero) # Se o usuário digitar 0, ocorrerá um erro "ZeroDivisionError"
8.2 - Blocos try, except, else e finally
8.2.1 - Usando try e except
O bloco
try
permite que você execute um código que pode gerar uma exceção. O bloco except
captura e lida com a exceção, evitando que o programa seja interrompido.Python
Copiar
try:
numero = int(input("Digite um número: "))
resultado = 10 / numero
print(resultado)
except ZeroDivisionError:
print("Erro: Divisão por zero não é permitida.")
except ValueError:
print("Erro: Você deve digitar um número válido.")
ZeroDivisionError
e ValueError
) para capturar diferentes tipos de erros.8.2.2 - Usando else
O bloco
else
é executado apenas se nenhuma exceção for gerada no bloco try
.Python
Copiar
try:
numero = int(input("Digite um número: "))
resultado = 10 / numero
except ZeroDivisionError:
print("Erro: Divisão por zero não é permitida.")
else:
print("Resultado:", resultado)
8.2.3 - Usando finally
O bloco
finally
é executado independentemente de ocorrer uma exceção ou não. Ele é útil para liberar recursos, como fechar arquivos.Python
Copiar
try:
arquivo = open("dados.txt", "r")
conteudo = arquivo.read()
except FileNotFoundError:
print("Erro: Arquivo não encontrado.")
finally:
arquivo.close()
print("Arquivo fechado.")
8.3 - Criando exceções personalizadas
Python permite que você crie suas próprias exceções, o que é útil para lidar com erros específicos da lógica do seu programa.
8.3.1 - Criando uma exceção personalizada
Para criar uma exceção personalizada, basta criar uma nova classe que herde de
Exception
.Python
Copiar
class ErroPersonalizado(Exception):
pass
def verificar_idade(idade):
if idade < 18:
raise ErroPersonalizado("Idade menor que 18 não é permitida!")
else:
print("Acesso permitido.")
try:
verificar_idade(16)
except ErroPersonalizado as e:
print(e) # Saída: Idade menor que 18 não é permitida!
Exercícios
Crie um programa que solicite ao usuário dois números e tente dividir o primeiro pelo segundo. Use
try
e except
para capturar uma possível divisão por zero e exiba uma mensagem apropriada.Crie uma função que solicite ao usuário um número inteiro. Se o valor fornecido não for um número, capture a exceção e exiba uma mensagem de erro.
Crie um arquivo de texto e leia seu conteúdo. Use
try
, except
e finally
para garantir que o arquivo seja fechado, mesmo que ocorra um erro.Crie uma exceção personalizada que verifique se um nome tem pelo menos 5 caracteres. Se não tiver, lance a exceção e trate o erro.
9 - Programação Orientada a Objetos (POO)
A Programação Orientada a Objetos (POO) é um dos paradigmas mais poderosos e utilizados na programação. Ela permite estruturar seu código de forma que ele seja mais modular, reutilizável e fácil de manter. Em vez de pensar em termos de funções e procedimentos, você passa a pensar em objetos que possuem características e comportamentos.
9.1 - O que é POO e por que usar?
POO permite representar conceitos do mundo real em código, facilitando a modelagem de problemas complexos. Ela é baseada em quatro pilares fundamentais:
Abstração: Focar nos detalhes essenciais de um objeto e ignorar os detalhes irrelevantes.
Encapsulamento: Proteger os dados do objeto, permitindo acesso apenas por métodos específicos.
Herança: Reutilizar código definindo uma hierarquia entre classes.
Polimorfismo: Capacidade de um método se comportar de diferentes formas, dependendo do objeto que o utiliza.
9.2 - Classes e objetos
Uma classe é um "molde" que define as características e comportamentos de um objeto. Um objeto é uma instância dessa classe.
9.2.1 - Criando uma classe
Python
Copiar
class Carro:
def __init__(self, marca, modelo, ano):
self.marca = marca # Atributo
self.modelo = modelo # Atributo
self.ano = ano # Atributo
def descrever(self):
return f"{self.marca} {self.modelo}, {self.ano}"
9.2.2 - Criando um objeto
Python
Copiar
meu_carro = Carro("Toyota", "Corolla", 2020)
print(meu_carro.descrever()) # Saída: Toyota Corolla, 2020
9.3 - Atributos e métodos
Atributos: São as características do objeto (variáveis).
Métodos: São as ações ou comportamentos do objeto (funções dentro da classe).
9.3.1 - Atributos de instância
Os atributos de instância são definidos dentro do método
__init__
e são exclusivos de cada objeto.Python
Copiar
class Pessoa:
def __init__(self, nome, idade):
self.nome = nome
self.idade = idade
p1 = Pessoa("Maria", 30)
p2 = Pessoa("João", 25)
9.3.2 - Métodos de instância
Métodos são funções que pertencem à classe e podem acessar os atributos do objeto usando
self
.Python
Copiar
class Pessoa:
def __init__(self, nome):
self.nome = nome
def cumprimentar(self):
return f"Olá, meu nome é {self.nome}"
p = Pessoa("Ana")
print(p.cumprimentar()) # Saída: Olá, meu nome é Ana
9.4 - Encapsulamento, herança e polimorfismo
9.4.1 - Encapsulamento
O encapsulamento permite proteger os atributos e métodos de um objeto, controlando o acesso a eles. Em Python, usamos
_
(underscore) para indicar que um atributo ou método é "privado".Python
Copiar
class ContaBancaria:
def __init__(self, saldo):
self._saldo = saldo # Atributo "privado"
def mostrar_saldo(self):
return f"Seu saldo é {self._saldo}"
conta = ContaBancaria(1000)
print(conta.mostrar_saldo()) # Saída: Seu saldo é 1000
9.4.2 - Herança
A herança permite que uma classe (classe filha) herde atributos e métodos de outra classe (classe pai).
Python
Copiar
class Animal:
def __init__(self, nome):
self.nome = nome
def falar(self):
pass
class Cachorro(Animal):
def falar(self):
return "Au Au"
c = Cachorro("Rex")
print(c.falar()) # Saída: Au Au
9.4.3 - Polimorfismo
O polimorfismo permite que um método tenha comportamentos diferentes dependendo do objeto que o utiliza.
Python
Copiar
class Gato(Animal):
def falar(self):
return "Miau"
animais = [Cachorro("Rex"), Gato("Mimi")]
for animal in animais:
print(f"{animal.nome} diz: {animal.falar()}")
9.5 - Métodos especiais (construtor, destrutor, etc.)
Métodos especiais são aqueles que possuem uma função especial e geralmente começam e terminam com
__
.9.5.1 - __init__: Construtor
É o método chamado quando um objeto é criado.
Python
Copiar
class Livro:
def __init__(self, titulo, autor):
self.titulo = titulo
self.autor = autor
9.5.2 - __str__: Representação em string
Define como o objeto deve ser exibido ao usar
print()
.Python
Copiar
class Livro:
def __init__(self, titulo, autor):
self.titulo = titulo
self.autor = autor
def __str__(self):
return f"{self.titulo} por {self.autor}"
livro = Livro("1984", "George Orwell")
print(livro) # Saída: 1984 por George Orwell
9.5.3 - __del__: Destrutor
É chamado quando o objeto é destruído ou quando o programa termina.
Python
Copiar
class Livro:
def __del__(self):
print("Objeto Livro foi destruído")
livro = Livro()
del livro # Saída: Objeto Livro foi destruído
Exercícios
Crie uma classe
Livro
com atributos título
e autor
, e um método descrever()
que retorna uma string com o título e autor do livro.Crie uma classe
Veículo
com um método mover()
. Em seguida, crie as classes Carro
e Bicicleta
que herdam de Veículo
e sobrecarregam o método mover()
com comportamentos específicos para cada veículo.Crie um sistema bancário onde você tenha a classe
Conta
com métodos para depositar
, sacar
e exibir saldo
. Garanta que o saldo não possa ser acessado diretamente de fora da classe.Crie uma exceção personalizada chamada
SaldoInsuficienteException
que deve ser lançada quando um saque é feito em uma conta com saldo insuficiente.10 - Biblioteca Numpy (manipulação de arrays)
O NumPy (Numerical Python) é uma das bibliotecas mais populares e fundamentais para a computação científica em Python. Ele fornece suporte para a manipulação eficiente de grandes vetores, matrizes e arrays multidimensionais, além de oferecer funções matemáticas de alto desempenho.
10.1 - Introdução ao NumPy
Para usar a biblioteca NumPy, primeiro precisamos instalá-la (caso ainda não esteja instalada):
Shell
Copiar
pip install numpy
Depois, é comum importar o NumPy utilizando a convenção
import numpy as np
.Python
Copiar
import numpy as np
10.2 - Criando arrays
A estrutura de dados mais importante do NumPy é o array. Um array é uma coleção ordenada de elementos que podem ser acessados por índices, semelhante a listas, mas com capacidades e desempenho superiores.
10.2.1 - Criando um array a partir de uma lista
Python
Copiar
import numpy as np
lista = [1, 2, 3, 4, 5]
array = np.array(lista)
print(array) # Saída: [1 2 3 4 5]
10.2.2 - Criando arrays multidimensionais
Podemos criar arrays de várias dimensões, como matrizes.
Python
Copiar
matriz = np.array([[1, 2, 3], [4, 5, 6]])
print(matriz)
# Saída:
# [[1 2 3]
# [4 5 6]]
10.3 - Principais funções e operações do NumPy
10.3.1 - Funções de inicialização
O NumPy possui várias funções para criar arrays rapidamente:
np.zeros((linhas, colunas))
: Cria um array de zeros.np.ones((linhas, colunas))
: Cria um array de uns.np.eye(n)
: Cria uma matriz identidade.np.arange(início, fim, passo)
: Cria um array com valores em um intervalo.Python
Copiar
zeros = np.zeros((2, 3))
print(zeros)
# Saída:
# [[0. 0. 0.]
# [0. 0. 0.]]
10.3.2 - Operações aritméticas
Podemos realizar operações aritméticas diretamente nos arrays, e o NumPy aplica as operações a todos os elementos:
Python
Copiar
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
soma = array1 + array2
print(soma) # Saída: [5 7 9]
multiplicacao = array1 * 2
print(multiplicacao) # Saída: [2 4 6]
10.3.3 - Indexação e fatiamento
Você pode acessar e modificar elementos de um array de forma semelhante às listas.
Python
Copiar
array = np.array([10, 20, 30, 40])
print(array[1]) # Saída: 20
matriz = np.array([[1, 2, 3], [4, 5, 6]])
print(matriz[1, 2]) # Saída: 6
10.3.4 - Funções estatísticas
NumPy oferece funções úteis para estatísticas e análise de dados:
np.mean(array)
: Média dos elementos.np.sum(array)
: Soma dos elementos.np.max(array)
: Maior valor.np.min(array)
: Menor valor.np.std(array)
: Desvio padrão.Python
Copiar
array = np.array([1, 2, 3, 4, 5])
print(np.mean(array)) # Saída: 3.0
10.4 - Operações com matrizes
NumPy facilita a manipulação e operação com matrizes, como a multiplicação de matrizes.
Python
Copiar
matriz1 = np.array([[1, 2], [3, 4]])
matriz2 = np.array([[5, 6], [7, 8]])
resultado = np.dot(matriz1, matriz2)
print(resultado)
# Saída:
# [[19 22]
# [43 50]]
np.dot()
realiza a multiplicação de matrizes e produtos escalares.
Exercícios
Crie um array com os números de 1 a 10 e encontre a média, soma e desvio padrão desses números.
Crie uma matriz 3x3 com valores de 1 a 9 e exiba o elemento da segunda linha e terceira coluna.
Crie um array de zeros com 5 elementos e, em seguida, substitua o terceiro elemento por 10.
Crie duas matrizes 2x2 e faça a multiplicação entre elas.
11 - Biblioteca Pandas (análise de dados)
O Pandas é uma biblioteca fundamental para a análise de dados em Python. Ele oferece estruturas de dados rápidas e flexíveis que permitem manipular, limpar e analisar grandes volumes de dados de forma eficiente.
11.1 - Introdução ao Pandas
Para começar a usar o Pandas, você precisa instalá-lo (caso ainda não o tenha):
Shell
Copiar
pip install pandas
Em seguida, importe a biblioteca, utilizando a convenção
import pandas as pd
:Python
Copiar
import pandas as pd
11.2 - Estruturas de dados principais do Pandas
As duas principais estruturas de dados oferecidas pelo Pandas são:
Series: Uma estrutura de dados unidimensional, semelhante a uma lista ou coluna de uma planilha.
DataFrame: Uma estrutura de dados bidimensional que se assemelha a uma tabela, com linhas e colunas.
11.2.1 - Criando uma Series
Você pode criar uma
Series
a partir de uma lista ou dicionário:Python
Copiar
import pandas as pd
# Criando uma Series a partir de uma lista
lista = [10, 20, 30, 40]
serie = pd.Series(lista)
print(serie)
11.2.2 - Criando um DataFrame
O
DataFrame
é a estrutura de dados mais poderosa do Pandas. Você pode criá-lo a partir de listas, dicionários, ou até mesmo de arquivos como CSV e Excel.Python
Copiar
# Criando um DataFrame a partir de um dicionário
dados = {
"Nome": ["Ana", "João", "Maria"],
"Idade": [28, 34, 29],
"Cidade": ["São Paulo", "Rio de Janeiro", "Curitiba"]
}
df = pd.DataFrame(dados)
print(df)
11.3 - Manipulação de dados com Pandas
Uma das grandes vantagens do Pandas é a facilidade com que você pode manipular dados. Vamos explorar algumas operações comuns.
11.3.1 - Selecionando colunas e linhas
Para selecionar uma coluna, use
df['NomeColuna']
:Python
Copiar
print(df["Nome"])
Para selecionar linhas, use
iloc
(baseado em índices) ou loc
(baseado em rótulos):Python
Copiar
# Selecionando a primeira linha
print(df.iloc[0])
# Selecionando linhas onde a idade é maior que 30
print(df[df["Idade"] > 30])
11.3.2 - Adicionando e removendo colunas
Você pode adicionar uma nova coluna ao DataFrame de forma simples:
Python
Copiar
df["Profissão"] = ["Engenheira", "Médico", "Designer"]
print(df)
Para remover uma coluna, use
drop
:Python
Copiar
df = df.drop(columns=["Cidade"])
print(df)
11.4 - Operações de agrupamento e agregação
O Pandas facilita a análise de dados agrupando e agregando informações, o que é útil para criar relatórios e estatísticas.
Python
Copiar
# Criando um novo DataFrame
dados_vendas = {
"Vendedor": ["Ana", "Ana", "João", "Maria", "Maria"],
"Vendas": [200, 150, 300, 400, 350]
}
df_vendas = pd.DataFrame(dados_vendas)
# Agrupando por Vendedor e somando as Vendas
agrupado = df_vendas.groupby("Vendedor").sum()
print(agrupado)
11.5 - Leitura e escrita de arquivos
O Pandas facilita a leitura e escrita de arquivos em diferentes formatos, como CSV, Excel, JSON, entre outros.
11.5.1 - Lendo arquivos CSV
Python
Copiar
df_csv = pd.read_csv("arquivo.csv")
print(df_csv.head())
11.5.2 - Escrevendo arquivos CSV
Python
Copiar
df.to_csv("saida.csv", index=False)
Exercícios
Crie um DataFrame com informações sobre cinco produtos (nome, preço e quantidade em estoque) e exiba o produto com o maior preço.
Adicione uma nova coluna ao DataFrame do exercício anterior com o valor total em estoque (preço * quantidade).
Leia um arquivo CSV com informações sobre vendas (vendedor, produto, valor da venda) e exiba o total de vendas por vendedor.
Crie um DataFrame com as notas de três alunos em três disciplinas diferentes. Calcule a média de cada aluno e adicione uma nova coluna com o resultado.
12 - Biblioteca Matplotlib (visualização de dados)
O Matplotlib é uma biblioteca poderosa para a visualização de dados em Python. Ele permite criar uma ampla variedade de gráficos e visualizações, desde os mais simples até os mais complexos, tornando-se uma ferramenta essencial para cientistas de dados, analistas e programadores que desejam comunicar informações de forma visual.
12.1 - Introdução ao Matplotlib
Para começar a usar o Matplotlib, você precisa instalá-lo (caso ainda não tenha):
Shell
Copiar
pip install matplotlib
Depois, é comum importar a biblioteca usando a convenção
import matplotlib.pyplot as plt
.Python
Copiar
import matplotlib.pyplot as plt
12.2 - Criando gráficos básicos
12.2.1 - Gráfico de linhas
O gráfico de linhas é ideal para mostrar tendências ao longo do tempo. Vamos criar um gráfico simples com o Matplotlib.
Python
Copiar
import matplotlib.pyplot as plt
# Dados
anos = [2015, 2016, 2017, 2018, 2019, 2020]
vendas = [100, 120, 150, 170, 160, 180]
# Criando o gráfico de linhas
plt.plot(anos, vendas, label='Vendas', color='blue', marker='o')
plt.title("Vendas ao longo dos anos")
plt.xlabel("Ano")
plt.ylabel("Vendas (milhares)")
plt.legend()
plt.show()
12.2.2 - Gráfico de barras
O gráfico de barras é ideal para comparar valores entre diferentes categorias.
Python
Copiar
categorias = ["A", "B", "C", "D"]
valores = [23, 45, 56, 78]
plt.bar(categorias, valores, color='green')
plt.title("Valores por Categoria")
plt.xlabel("Categoria")
plt.ylabel("Valor")
plt.show()
12.2.3 - Gráfico de pizza
O gráfico de pizza é útil para mostrar proporções de um todo.
Python
Copiar
fatias = [15, 30, 45, 10]
rotulos = ["Categoria 1", "Categoria 2", "Categoria 3", "Categoria 4"]
plt.pie(fatias, labels=rotulos, autopct="%1.1f%%", startangle=90)
plt.title("Distribuição por Categoria")
plt.axis("equal") # Assegura que o gráfico seja um círculo
plt.show()
12.3 - Personalizando gráficos
Uma das maiores vantagens do Matplotlib é a capacidade de personalizar os gráficos para que eles se ajustem perfeitamente às suas necessidades.
12.3.1 - Alterando cores e estilos
Você pode alterar as cores e estilos das linhas, barras e outros elementos do gráfico.
Python
Copiar
plt.plot(anos, vendas, color='red', linestyle='--', linewidth=2, marker='s')
plt.title("Gráfico de Linhas Personalizado")
plt.xlabel("Ano")
plt.ylabel("Vendas")
plt.show()
12.3.2 - Adicionando múltiplas séries de dados
Você pode adicionar várias séries de dados em um único gráfico para comparações.
Python
Copiar
# Dados
vendas_produto_A = [100, 120, 130, 145, 160, 180]
vendas_produto_B = [90, 110, 140, 150, 155, 170]
# Gráfico
plt.plot(anos, vendas_produto_A, label='Produto A', marker='o')
plt.plot(anos, vendas_produto_B, label='Produto B', marker='x')
plt.title("Comparação de Vendas entre Produtos A e B")
plt.xlabel("Ano")
plt.ylabel("Vendas")
plt.legend()
plt.show()
12.4 - Salvando gráficos
Você pode salvar os gráficos em diferentes formatos de imagem, como PNG, JPG, SVG, etc.
Python
Copiar
plt.plot(anos, vendas, label='Vendas', marker='o')
plt.title("Vendas ao longo dos anos")
plt.xlabel("Ano")
plt.ylabel("Vendas (milhares)")
plt.legend()
plt.savefig("grafico_vendas.png") # Salva o gráfico como PNG
plt.show()
Exercícios
Crie um gráfico de barras que mostre a quantidade de vendas de 5 produtos diferentes.
Crie um gráfico de linhas para comparar as temperaturas médias de duas cidades ao longo de um ano (12 meses).
Crie um gráfico de pizza que represente a distribuição de tipos de frutas em um cesto: 40% maçãs, 25% bananas, 20% laranjas e 15% uvas.
Personalize um gráfico de linhas com cores, estilos e marcadores diferentes para representar as vendas de dois produtos ao longo de 6 anos.
13 - Biblioteca Requests (requisições HTTP)
A Requests é uma biblioteca popular em Python que permite fazer requisições HTTP de forma simples e eficiente. Ela é amplamente utilizada para interagir com APIs, baixar conteúdo da web e realizar operações de web scraping.
13.1 - Introdução ao Requests
Para usar a biblioteca Requests, primeiro instale-a (caso ainda não tenha feito):
Shell
Copiar
pip install requests
Em seguida, importe-a no seu código:
Python
Copiar
import requests
13.2 - Fazendo requisições HTTP
13.2.1 - Requisição GET
A requisição GET é usada para obter dados de uma URL. É a forma mais comum de requisição HTTP.
Python
Copiar
import requests
# Fazendo uma requisição GET
response = requests.get("<https://jsonplaceholder.typicode.com/todos/1>")
# Verificando o status da requisição
print(response.status_code) # Saída: 200 (OK)
# Acessando o conteúdo da resposta
print(response.json())
13.2.2 - Requisição POST
A requisição POST é usada para enviar dados para um servidor.
Python
Copiar
url = "<https://jsonplaceholder.typicode.com/posts>"
dados = {
"title": "Aprendendo Requests",
"body": "A biblioteca Requests é muito útil!",
"userId": 1
}
response = requests.post(url, json=dados)
print(response.status_code) # Saída: 201 (Created)
print(response.json())
13.3 - Principais métodos HTTP
Além de
GET
e POST
, Requests também suporta outros métodos HTTP, como:PUT: Usado para atualizar dados em um servidor.
DELETE: Usado para excluir dados em um servidor.
Python
Copiar
# Exemplo de requisição PUT
response_put = requests.put("<https://jsonplaceholder.typicode.com/posts/1>", json={"title": "Novo título"})
print(response_put.status_code)
# Exemplo de requisição DELETE
response_delete = requests.delete("<https://jsonplaceholder.typicode.com/posts/1>")
print(response_delete.status_code)
13.4 - Trabalhando com parâmetros e cabeçalhos
Você pode passar parâmetros e cabeçalhos nas requisições para obter resultados específicos ou enviar informações adicionais.
13.4.1 - Passando parâmetros em uma requisição GET
Python
Copiar
params = {"userId": 1}
response = requests.get("<https://jsonplaceholder.typicode.com/posts>", params=params)
print(response.json())
13.4.2 - Passando cabeçalhos em uma requisição
Python
Copiar
headers = {"Authorization": "Bearer seu_token"}
response = requests.get("<https://api.exemplo.com/dados>", headers=headers)
print(response.status_code)
13.5 - Tratamento de erros e exceções
É importante sempre verificar o status da resposta e tratar possíveis erros.
Python
Copiar
try:
response = requests.get("<https://jsonplaceholder.typicode.com/todos/1>")
response.raise_for_status() # Levanta uma exceção para códigos de status de erro
dados = response.json()
print(dados)
except requests.exceptions.HTTPError as err:
print(f"Erro HTTP: {err}")
except requests.exceptions.RequestException as err:
print(f"Erro na requisição: {err}")
response.raise_for_status()
para capturar erros de forma eficiente.
Exercícios
Faça uma requisição GET para a URL
https://jsonplaceholder.typicode.com/users
e exiba o nome e o email de cada usuário.Faça uma requisição POST para
https://jsonplaceholder.typicode.com/posts
com os dados de um novo post (título, corpo e ID do usuário) e exiba a resposta.Atualize um recurso existente na URL
https://jsonplaceholder.typicode.com/posts/1
usando uma requisição PUT, alterando o título e o corpo do post.Faça uma requisição DELETE para excluir o recurso com ID 1 da URL
https://jsonplaceholder.typicode.com/posts/1
e verifique se a operação foi bem-sucedida.
.png)