Python para Intermediario
Python para Intermediario
Iniciar
Visão geral
O curso de Python para Intermediário é projetado para alunos que já possuem uma
base sólida em Python e desejam aprimorar suas habilidades na linguagem. O curso
abrange tópicos avançados, como manipulação de arquivos, programação orientada a
objetos e tratamento de exceções. Os alunos também aprenderão sobre bibliotecas
populares em Python, como numpy, pandas e matplotlib, que são amplamente
utilizadas para análise de dados e visualização. Ao final do curso, os alunos estarão
aptos a criar programas mais complexos e eficientes com Python.
01 Arquivos
Manipulação Avançada de
Arquivos
csv: Utilizada para leitura e escrita de arquivos CSV (Comma Separated Values), que são
amplamente utilizados para armazenar dados tabulares.
json: Ideal para trabalhar com arquivos JSON (JavaScript Object Notation), que são
amplamente utilizados para representar dados estruturados.
pdfminer e PyPDF2: Utilizadas para extrair informações de arquivos PDF, como texto e
metadados.
PIL (Python Imaging Library) e opencv: Essas bibliotecas são ideais para manipular imagens,
permitindo a leitura, redimensionamento, conversão de formato, entre outras operações.
pandas: Facilita a leitura, escrita e manipulação de dados tabulares de forma eficiente. Com
pandas, você poderá filtrar, ordenar, agregar e transformar dados em arquivos CSV, Excel,
JSON, entre outros formatos.
sqlite3: Permite interagir com bancos de dados SQLite, que são armazenados em um único
arquivo. Com essa biblioteca, você poderá executar consultas SQL, criar tabelas, inserir,
atualizar e excluir registros.
lxml e BeautifulSoup: Essas bibliotecas são amplamente utilizadas para analisar e extrair
informações de arquivos HTML e XML. Com elas, é possível fazer scraping de páginas web,
buscar elementos específicos e extrair dados estruturados.
Compressão de Arquivos
zipfile: Utilizada para compactar e descompactar arquivos ZIP. Com ela, você poderá criar e
extrair arquivos ZIP, bem como adicionar, atualizar e excluir arquivos dentro de um arquivo
compactado.
gz, bz2 e lzma: Essas bibliotecas lidam com a compressão e descompressão de arquivos
nos formatos GZIP, BZIP2 e LZMA, respectivamente. Elas são ideais para a manipulação de
arquivos individuais que precisam ser compactados.
tarfile: Permite criar, abrir e manipular arquivos TAR, que são arquivos de arquivamento que
podem conter múltiplos arquivos e diretórios.
Programação Orientada a
Objetos
Conceitos Básicos
A POO se baseia em conceitos fundamentais que são essenciais para compreender
e utilizar corretamente essa abordagem. Os principais conceitos são:
Classe
Uma classe é uma estrutura que define um novo tipo de dado, especificando quais
atributos e métodos esse tipo de dado possui. A classe é a representação abstrata de
um objeto, descrevendo suas características e comportamentos. Para criar uma
classe em Python, utilizamos a palavra reservada class , seguida pelo nome da
classe e dois pontos (:).
class Carro:
pass
Nesse exemplo, criamos uma classe chamada Carro que ainda não possui nenhum
atributo ou método definido.
Objeto
meu_carro = Carro()
Neste caso, criamos um objeto meu_carro que é uma instância da classe Carro .
Atributos
Atributos são características ou propriedades de um objeto que o definem. Podemos
pensar em um objeto do mundo real, como um carro, que possui atributos como cor,
modelo, ano, etc. Em Python, podemos adicionar atributos às nossas classes
definindo-os dentro de métodos chamados de construtores. O construtor padrão é o
método __init__() .
class Carro:
def __init__(self, cor, modelo, ano):
self.cor = cor
self.modelo = modelo
self.ano = ano
Neste exemplo, definimos três atributos ( cor , modelo e ano ) para a classe
Carro . Esses atributos são inicializados quando um novo objeto é criado.
Métodos
class Carro:
def __init__(self, cor, modelo, ano):
self.cor = cor
self.modelo = modelo
self.ano = ano
def acelerar(self):
print("O carro está acelerando...")
def frear(self):
print("O carro está freando...")
Neste exemplo, adicionamos dois métodos à classe Carro : acelerar() e frear() .
Esses métodos definem o comportamento de um objeto da classe Carro .
Encapsulamento
class Carro:
def __init__(self, cor, modelo, ano):
self.cor = cor
self.modelo = modelo
self.ano = ano
def get_cor(self):
return self.cor
Herança
A herança é um conceito importante na programação orientada a objetos, que
permite que uma classe herde atributos e métodos de outra classe. A classe que
herda é chamada de classe filha ou subclasse, e a classe da qual ela herda é
chamada de classe pai ou superclasse.
class Veiculo:
def __init__(self, cor, modelo, ano):
self.cor = cor
self.modelo = modelo
self.ano = ano
def acelerar(self):
print("O veículo está acelerando...")
def frear(self):
print("O veículo está freando...")
class Carro(Veiculo):
def __init__(self, cor, modelo, ano, num_portas):
super().__init__(cor, modelo, ano)
self.num_portas = num_portas
def abrir_porta(self):
print("A porta do carro está aberta.")
Polimorfismo
O polimorfismo é outro conceito importante na POO, que permite que um objeto seja
tratado de várias formas diferentes ou possa assumir diferentes comportamentos
dependendo do contexto.
class Animal:
def fazer_som(self):
pass
class Cachorro(Animal):
def fazer_som(self):
print("Au Au!")
class Gato(Animal):
def fazer_som(self):
print("Miau!")
def fazer_barulho(animal):
animal.fazer_som()
cachorro = Cachorro()
gato = Gato()
Neste exemplo, temos as classes Animal , Cachorro e Gato . Cada uma dessas
classes possui um método fazer_som() . O polimorfismo é aplicado quando
chamamos a função fazer_barulho() , passando um objeto Cachorro e um objeto
Gato . O comportamento específico de cada objeto é invocado dependendo do tipo
do objeto em tempo de execução.
Tratamento de Exceções
03 Tratamento de Exceções
Bloco try-except
O tratamento de exceções é realizado por meio do uso dos blocos try e except .
O bloco try é utilizado para definir o código que pode gerar uma exceção. Se
ocorrer uma exceção durante a execução desse bloco, o controle é transferido para o
bloco except , onde o código para tratar a exceção é especificado.
try:
# Código que pode gerar uma exceção
except ExcecaoTipo:
# Código para tratar a exceção
É possível tratar diferentes tipos de exceções de forma específica, para lidar com
cada situação de erro de maneira adequada. Para isso, basta especificar o tipo de
exceção após a palavra-chave except . Por exemplo, para tratar uma exceção do
tipo ZeroDivisionError , utilizamos o seguinte código:
try:
# Código que pode gerar uma exceção
except ZeroDivisionError:
# Código para tratar a exceção do tipo ZeroDivisionError
Caso uma exceção ocorra durante a execução do bloco try e não seja tratada por
nenhum bloco except específico, ela será propagada para blocos except de níveis
superiores.
Bloco finally
O bloco finally é opcional e pode ser utilizado em conjunto com o bloco try-
try:
# Código que pode gerar uma exceção
except ExcecaoTipo:
# Código para tratar a exceção
finally:
# Código que será sempre executado
Exceções personalizadas
Além das exceções pré-definidas em Python, é possível criar exceções
personalizadas para casos específicos. Isso é especialmente útil quando queremos
lançar uma exceção com uma mensagem personalizada ou estender o
comportamento de uma exceção existente. Para criar uma exceção personalizada,
basta criar uma classe que herde da classe Exception (ou de uma de suas
subclasses) e adicionar o comportamento desejado.
class SaldoInsuficienteError(Exception):
def __init__(self, saldo_atual, quantidade):
self.saldo_atual = saldo_atual
self.quantidade = quantidade
def __str__(self):
return f"Saldo insuficiente. Saldo atual: {self.saldo_atual}, Quantida
Conclusão
Exercícios Práticos
Vamos colocar seus conhecimentos em prática
04 Exercícios Práticos
Nesta lição, colocaremos a teoria em prática por meio de atividades práticas. Clique
nos itens abaixo para conferir cada exercício e desenvolver habilidades práticas que o
ajudarão a ter sucesso na disciplina.
Crie uma classe chamada `Banco` que represente um banco. A classe deve
ter os atributos `nome` (string) e `saldo` (float). Além disso, implemente os
métodos `depositar(valor)` e `sacar(valor)` que atualizam o saldo conforme as
operações são realizadas. Teste a classe criando uma instância e realizando
algumas operações de depósito e saque.
Exercício 4: Herança
Resumo
Vamos revisar o que acabamos de ver até agora
05 Resumo
06 Questionário
open('arquivo.txt', 'r')
open('arquivo.txt', 'a')
open('arquivo.txt', 'w')
Uma técnica para criar novos objetos a partir de uma classe existente.
Um recurso que permite que uma classe herde os atributos e métodos de outra classe.
try-catch { ... }
file.write()
file.close()
file.read()
finally
else
catch
Enviar
Conclusão
Parabéns!
Parabéns por concluir este curso! Você deu um passo importante para liberar todo o
seu potencial. Concluir este curso não é apenas adquirir conhecimento; trata-se de
colocar esse conhecimento em prática e causar um impacto positivo no mundo ao
seu redor.