Guia Completo de Programacao Python Capitulo 1 — Basico de Python
Guia Completo de
Programacao Python
Do basico ao avancado — exemplos praticos e desafios em cada capitulo
1 2 3 4 5
Basico Pacotes POO DSA Automacao
6 7 8 9
Testes Avancado Web Dados
Baseado no Mapa Mental para Aprender Programacao Python
Pagina 1
Guia Completo de Programacao Python Capitulo 1 — Basico de Python
1 Basico de Python
Python e uma das linguagens de programacao mais populares do mundo. Sua sintaxe simples e legivel
torna o aprendizado acessivel para iniciantes, ao mesmo tempo em que oferece recursos poderosos para
profissionais.
1.1 Sintaxe Basica e Variaveis
Variaveis sao criadas no momento em que voce atribui um valor. Python e dinamicamente tipado — nao e
necessario declarar o tipo antecipadamente.
Exemplo Simples Criando variaveis
nome = "Maria"
idade = 28
altura = 1.65
ativo = True
print(nome, idade, type(altura))
Exemplo
Desempacotamento e type hints
Avancado
x, y, z = 10, 20, 30
primeiro, *meio, ultimo = [1, 2, 3, 4, 5]
print(primeiro) # 1
print(meio) # [2, 3, 4]
def saudacao(nome: str, vezes: int = 1) -> str:
return (f"Ola, {nome}! " * vezes).strip()
print(saudacao("Pedro", 3))
Dica Use nomes de variaveis descritivos. 'idade_usuario' e melhor que 'x'.
1.2 Tipos de Dados
a = 42 # int
b = 3.14 # float
c = 2 + 3j # complex
texto = "Python e incrivel!"
print([Link]()) # PYTHON E INCRIVEL!
print(texto[0:6]) # Python
print(len(texto)) # 19
print(int("100") + 50) # 150
1.3 Condicionais
Pagina 2
Guia Completo de Programacao Python Capitulo 1 — Basico de Python
nota = 75
if nota >= 90:
print("Excelente")
elif nota >= 70:
print("Bom")
else:
print("Reprovado")
status = "adulto" if nota >= 18 else "menor"
match nota: # Python 3.10+
case n if n >= 90: print("A")
case n if n >= 70: print("B")
case _: print("C")
1.4 Loops
for i in range(5):
print(i, end=" ") # 0 1 2 3 4
frutas = ["maca","banana","laranja"]
for fruta in frutas:
print(fruta)
contador = 0
while contador < 3:
print(contador); contador += 1
nomes = ["Ana","Beto","Carol"]
notas = [9.5, 7.0, 8.8]
for i,(nome,nota) in enumerate(zip(nomes,notas),1):
print(f"{i}. {nome}: {nota}")
1.5 Funcoes
def potencia(base, expoente=2):
return base ** expoente
print(potencia(3)) # 9
print(potencia(2, 10)) # 1024
def relatorio(*nomes, titulo="Relatorio", **extras):
print(f"=== {titulo} ===")
for nome in nomes:
print(f"- {nome}")
for k, v in [Link]():
print(f" {k}: {v}")
relatorio("Ana","Beto", titulo="Turma A", ano=2024)
1.6 Colecoes: Lista, Tupla, Conjunto e Dicionario
Pagina 3
Guia Completo de Programacao Python Capitulo 1 — Basico de Python
lista = [1,2,3,4,5]
[Link](6)
[Link](3)
dobrados = [x*2 for x in lista] # list comprehension
ponto = (10, 20)
x, y = ponto
cores = {"vermelho","azul","verde"}
[Link]("amarelo")
aluno = {"nome":"Leo","nota":9.5,"ativo":True}
aluno["turma"] = "A"
for chave, valor in [Link]():
print(f"{chave}: {valor}")
Desafios para Fixacao
1. Crie uma funcao que receba uma lista e retorne media, maximo e minimo.
2. Escreva um programa que conte quantas vezes cada palavra aparece em uma frase.
3. Implemente o jogo da adivinhacao com dicas 'maior' ou 'menor'.
4. Crie um dicionario de contatos com busca, adicao e remocao.
Pagina 4
Guia Completo de Programacao Python Capitulo 1 — Basico de Python
2 Gerenciadores de Pacotes
Gerenciadores de pacotes permitem instalar, atualizar e remover bibliotecas externas. Os dois principais sao
pip (oficial) e conda (popular em ciencia de dados).
2.1 pip — Instalador Padrao
pip install requests
pip install requests==2.31.0
pip list
pip freeze > [Link]
pip install -r [Link]
pip uninstall requests
pip install --upgrade requests
2.2 Ambientes Virtuais
Ambientes virtuais isolam as dependencias de cada projeto, evitando conflitos entre versoes.
python -m venv meu_projeto
source meu_projeto/bin/activate # Linux/Mac
meu_projeto\Scripts\activate # Windows
deactivate
2.3 conda
conda create -n ciencia_dados python=3.11
conda activate ciencia_dados
conda install numpy pandas matplotlib
conda env list
Atenca
Sempre use ambientes virtuais! Nunca instale pacotes direto no Python do sistema.
o
Desafios para Fixacao
1. Crie um ambiente virtual e instale 3 bibliotecas de sua escolha.
2. Gere um [Link] e tente replicar o ambiente em outra pasta.
Pagina 5
Guia Completo de Programacao Python Capitulo 1 — Basico de Python
3 Programacao Orientada a Objetos (POO)
A POO organiza o codigo em torno de objetos que combinam dados (atributos) e comportamentos
(metodos). E o paradigma dominante em projetos de medio e grande porte.
3.1 Classes e Objetos
class Cachorro:
especie = "Canis lupus familiaris" # atributo de classe
def __init__(self, nome, raca, idade):
[Link] = nome
[Link] = raca
[Link] = idade
def latir(self):
return f"{[Link]} diz: Au au!"
def __repr__(self):
return f"Cachorro(nome={[Link]!r}, raca={[Link]!r})"
rex = Cachorro("Rex","Labrador",3)
print([Link]()) # Rex diz: Au au!
3.2 Heranca
class Animal:
def __init__(self, nome): [Link] = nome
def respirar(self): return f"{[Link]} esta respirando."
class Passaro(Animal):
def __init__(self, nome, pode_voar=True):
super().__init__(nome)
self.pode_voar = pode_voar
def voar(self):
if self.pode_voar: return f"{[Link]} esta voando!"
return f"{[Link]} nao consegue voar."
class Pinguim(Passaro):
def __init__(self, nome): super().__init__(nome, pode_voar=False)
print(Passaro("Pato").voar()) # Pato esta voando!
print(Pinguim("Pingo").voar()) # Pingo nao consegue voar.
3.3 Encapsulamento, Polimorfismo e Abstracao
Pagina 6
Guia Completo de Programacao Python Capitulo 1 — Basico de Python
from abc import ABC, abstractmethod
import math
class Forma(ABC):
@abstractmethod
def area(self) -> float: pass
@abstractmethod
def perimetro(self) -> float: pass
class Circulo(Forma):
def __init__(self, raio): self.__raio = raio
@property
def raio(self): return self.__raio
def area(self): return [Link] * self.__raio**2
def perimetro(self): return 2 * [Link] * self.__raio
class Retangulo(Forma):
def __init__(self, l, a): self.l=l; self.a=a
def area(self): return self.l * self.a
def perimetro(self): return 2*(self.l+self.a)
for f in [Circulo(5), Retangulo(4,6)]:
print(f"{f.__class__.__name__}: area={[Link]():.2f}")
Desafios para Fixacao
1. Crie hierarquia para sistema bancario: Conta, ContaCorrente, ContaPoupanca.
2. Implemente uma classe Pilha com encapsulamento (push, pop, peek, is_empty).
3. Crie sistema de funcionarios com calculo de salario diferente por cargo.
Pagina 7
Guia Completo de Programacao Python Capitulo 1 — Basico de Python
4 DSA — Estruturas de Dados e Algoritmos
Estruturas de dados organizam informacoes eficientemente. Algoritmos definem como processar esses
dados. Fundamentais para entrevistas tecnicas e software de alta performance.
4.1 Lista Ligada
class No:
def __init__(self, valor):
[Link] = valor; [Link] = None
class ListaLigada:
def __init__(self): [Link] = None
def inserir(self, valor):
novo = No(valor); [Link] = [Link]; [Link] = novo
def exibir(self):
atual = [Link]
while atual: print([Link], end=" -> "); atual = [Link]
print("None")
ll = ListaLigada()
for v in [3,2,1]: [Link](v)
[Link]() # 1 -> 2 -> 3 -> None
4.2 Pilha, Fila e Heap
from collections import deque
import heapq
pilha = []
[Link]("a"); [Link]("b"); [Link]("c")
print([Link]()) # c (LIFO)
fila = deque()
[Link]("primeiro"); [Link]("segundo")
print([Link]()) # primeiro (FIFO)
heap = [5,1,3,2,4]
[Link](heap)
print([Link](heap)) # 1
[Link](heap, 0)
print([Link](heap)) # 0
4.3 Recursao e Memoizacao
Pagina 8
Guia Completo de Programacao Python Capitulo 1 — Basico de Python
from functools import lru_cache
@lru_cache(maxsize=None)
def fib(n):
if n <= 1: return n
return fib(n-1) + fib(n-2)
print(fib(50)) # 12586269025 — rapido!
def busca_binaria(arr, alvo):
esq, dir = 0, len(arr)-1
while esq <= dir:
meio = (esq+dir)//2
if arr[meio] == alvo: return meio
elif arr[meio] < alvo: esq = meio+1
else: dir = meio-1
return -1
4.4 Algoritmos de Ordenacao
def merge_sort(arr):
if len(arr) <= 1: return arr
meio = len(arr)//2
esq = merge_sort(arr[:meio])
dir = merge_sort(arr[meio:])
return _merge(esq, dir)
def _merge(esq, dir):
res=[]; i=j=0
while i<len(esq) and j<len(dir):
if esq[i] < dir[j]: [Link](esq[i]); i+=1
else: [Link](dir[j]); j+=1
[Link](esq[i:]); [Link](dir[j:])
return res
print(merge_sort([5,2,8,1,9,3])) # [1,2,3,5,8,9]
Desafios para Fixacao
1. Implemente fila de prioridade com heapq para simular atendimento.
2. Escreva busca binaria de forma recursiva.
3. Compare Bubble Sort vs Merge Sort em listas de 1000 e 10000 elementos.
Pagina 9
Guia Completo de Programacao Python Capitulo 1 — Basico de Python
5 Automacao com Python
Python e excelente para automacao de tarefas repetitivas: manipulacao de arquivos, web scraping,
automacao de interface grafica e controle de rede.
5.1 Manipulacao de Arquivos
from pathlib import Path
with open("[Link]","r",encoding="utf-8") as f:
conteudo = [Link]()
with open("[Link]","w",encoding="utf-8") as f:
[Link]("Linha 1\n")
[Link](["Linha 2\n","Linha 3\n"])
caminho = Path("projetos/python")
[Link](parents=True, exist_ok=True)
for arq in Path(".").rglob("*.py"):
print(arq)
# Renomear em lote
for i, arq in enumerate(Path("fotos").glob("*.jpg")):
[Link]([Link] / f"foto_{i:03d}.jpg")
5.2 Web Scraping
import requests
from bs4 import BeautifulSoup
resp = [Link]("[Link]
soup = BeautifulSoup([Link], "[Link]")
titulo = [Link]("h1").text
links = [a["href"] for a in soup.find_all("a", href=True)]
sessao = [Link]()
[Link]({"User-Agent":"Mozilla/5.0"})
dados = [Link]("[Link]
5.3 Automacao de Email
import smtplib
from [Link] import MIMEText
def enviar_email(dest, assunto, corpo):
msg = MIMEText(corpo)
msg["Subject"] = assunto
msg["From"] = "remetente@[Link]"
msg["To"] = dest
with smtplib.SMTP_SSL("[Link]", 465) as smtp:
[Link]("usuario","senha_app")
smtp.send_message(msg)
enviar_email("destino@[Link]","Relatorio","Ola!")
Pagina 10
Guia Completo de Programacao Python Capitulo 1 — Basico de Python
Segura
Use variáveis de ambiente para guardar senhas. Nunca coloque credenciais no codigo!
nca
Desafios para Fixacao
1. Crie script que organiza arquivos por extensao (pdf, jpg, txt).
2. Faca scraper que coleta precos de um site e salva em CSV.
3. Automatize envio de emails com relatorio diario.
Pagina 11
Guia Completo de Programacao Python Capitulo 1 — Basico de Python
6 Testes em Python
Testes garantem que o codigo funciona corretamente e continua funcionando apos alteracoes. Python
oferece ferramentas poderosas para todos os tipos de teste.
6.1 unittest — Framework Padrao
import unittest
def dividir(a, b):
if b == 0: raise ValueError("Divisao por zero!")
return a / b
class TestDividir([Link]):
def test_simples(self): [Link](dividir(10,2), 5.0)
def test_negativo(self): [Link](dividir(-6,3), -2.0)
def test_zero(self):
with [Link](ValueError): dividir(10,0)
def test_float(self): [Link](dividir(1,3), 0.333, places=3)
if __name__ == "__main__": [Link]()
6.2 pytest — Framework Moderno
import pytest
def soma(a, b): return a + b
def test_positivos(): assert soma(2,3) == 5
def test_negativos(): assert soma(-1,-1) == -2
@[Link]("a,b,esp",[
(1,2,3),(0,0,0),(-1,1,0),(100,200,300),
])
def test_parametrizado(a,b,esp):
assert soma(a,b) == esp
@[Link]
def banco():
db = {"usuarios":[]}; yield db
def test_adicionar(banco):
banco["usuarios"].append("Ana")
assert len(banco["usuarios"]) == 1
6.3 Mocks e Integracao
Pagina 12
Guia Completo de Programacao Python Capitulo 1 — Basico de Python
from [Link] import patch, MagicMock
def buscar_usuario(user_id):
import requests
r = [Link](f"[Link]
return [Link]()
def test_buscar():
mock_r = MagicMock()
mock_r.json.return_value = {"id":1,"nome":"Ana"}
with patch("[Link]", return_value=mock_r):
resultado = buscar_usuario(1)
assert resultado["nome"] == "Ana"
# Comandos uteis:
# pytest -v
# pytest --cov=meu_modulo
Desafios para Fixacao
1. Escreva testes unitarios para validacao de CPF.
2. Use parametrize para testar conversao de temperatura.
3. Implemente mock para funcao que consome API externa.
Pagina 13
Guia Completo de Programacao Python Capitulo 1 — Basico de Python
7 Python Avancado
Recursos avancados que tornam Python poderoso: comprehensions, geradores, decoradores, closures,
lambdas, programacao funcional e concorrencia com threading.
7.1 Comprehensions
quadrados = [x**2 for x in range(10)]
pares = [x for x in range(20) if x%2==0]
matriz = [[i*j for j in range(3)] for i in range(3)]
quad_dict = {x: x**2 for x in range(5)}
letras = {[Link]() for c in "Hello World" if [Link]()}
soma = sum(x**2 for x in range(1_000_000)) # generator
7.2 Geradores e Iteradores
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a+b
gen = fibonacci()
print([next(gen) for _ in range(10)])
class Intervalo:
def __init__(self, ini, fim): [Link]=ini; [Link]=fim
def __iter__(self): return self
def __next__(self):
if [Link] >= [Link]: raise StopIteration
val=[Link]; [Link]+=1; return val
for n in Intervalo(1,6): print(n, end=" ")
7.3 Decoradores e Closures
Pagina 14
Guia Completo de Programacao Python Capitulo 1 — Basico de Python
import time
from functools import wraps
def cronometro(funcao):
@wraps(funcao)
def wrapper(*args, **kwargs):
t0 = [Link]()
resultado = funcao(*args, **kwargs)
print(f"{funcao.__name__}: {[Link]()-t0:.4f}s")
return resultado
return wrapper
@cronometro
def processar(n): return sum(range(n))
processar(1_000_000)
def repetir(vezes):
def decorador(func):
@wraps(func)
def wrapper(*args,**kwargs):
for _ in range(vezes): func(*args,**kwargs)
return wrapper
return decorador
@repetir(3)
def ola(nome): print(f"Ola, {nome}!")
7.4 Lambda, Map, Filter, Reduce e Threading
from functools import reduce
numeros = [1,2,3,4,5]
quadrados = list(map(lambda x: x**2, numeros))
pares = list(filter(lambda x: x%2==0, numeros))
produto = reduce(lambda a,b: a*b, numeros) # 120
import threading, time
def tarefa(nome, dur):
print(f"Inicio: {nome}")
[Link](dur)
print(f"Fim: {nome}")
t1 = [Link](target=tarefa, args=("A",2))
t2 = [Link](target=tarefa, args=("B",1))
[Link](); [Link]()
[Link](); [Link]()
Desafios para Fixacao
Pagina 15
Guia Completo de Programacao Python Capitulo 1 — Basico de Python
1. Implemente decorador de cache que memoriza resultados anteriores.
2. Crie gerador que le CSV linha a linha sem carregar tudo na memoria.
3. Use threading para baixar multiplas URLs e compare com versao sequencial.
Pagina 16
Guia Completo de Programacao Python Capitulo 1 — Basico de Python
8 Frameworks Web
Python possui excelentes frameworks para desenvolvimento web. Flask e minimalista e flexivel. Django e
completo com ORM e admin. FastAPI e ideal para APIs modernas e de alta performance.
8.1 Flask — Microframework
from flask import Flask, request, jsonify
app = Flask(__name__)
@[Link]("/")
def index(): return "Bem-vindo ao Flask!"
@[Link]("/usuario/<int:uid>")
def get_usuario(uid):
usuarios = {1:"Ana", 2:"Beto"}
return jsonify({"id":uid, "nome":[Link](uid,"?")})
@[Link]("/criar", methods=["POST"])
def criar():
dados = [Link]
return jsonify({"mensagem":f"Criado: {dados}"}), 201
if __name__=="__main__": [Link](debug=True)
8.2 FastAPI — APIs Modernas
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from typing import Optional
app = FastAPI()
class Produto(BaseModel):
nome: str; preco: float; estoque: int
descricao: Optional[str] = None
produtos_db = {}
@[Link]("/produtos/{pid}")
def get_produto(pid: int):
if pid not in produtos_db:
raise HTTPException(404, "Nao encontrado")
return produtos_db[pid]
@[Link]("/produtos/", status_code=201)
def criar_produto(pid: int, produto: Produto):
produtos_db[pid] = produto; return produto
# uvicorn app:app --reload
# Docs automaticos: [Link]
Desafios para Fixacao
Pagina 17
Guia Completo de Programacao Python Capitulo 1 — Basico de Python
1. Crie API Flask com CRUD completo para uma lista de tarefas.
2. Implemente autenticacao JWT em uma API FastAPI.
3. Construa API que consome dados externos e os transforma antes de retornar.
Pagina 18
Guia Completo de Programacao Python Capitulo 1 — Basico de Python
9 Ciencia de Dados com Python
Python domina ciencia de dados e machine learning. As bibliotecas NumPy, Pandas, Matplotlib, Seaborn,
Scikit-Learn e TensorFlow/PyTorch formam o ecossistema essencial do profissional de dados.
9.1 NumPy — Computacao Numerica
import numpy as np
arr = [Link]([1,2,3,4,5])
zeros = [Link]((3,3))
eye = [Link](3)
x = [Link](0,10,100)
y = [Link](x)
dados = [Link](1000)
print([Link](), [Link]())
acima = dados[dados > [Link]()]
A = [Link]([[1,2],[3,4]])
vals, vecs = [Link](A)
9.2 Pandas — Analise de Dados
import pandas as pd
df = [Link]({
"nome": ["Ana","Beto","Carol","Daniel"],
"idade": [25,30,22,28],
"salario":[4500,6000,3800,5200],
"dept": ["TI","RH","TI","Financeiro"]
})
ti = df[df["dept"]=="TI"]
media_dep = [Link]("dept")["salario"].mean()
df["bonus"]= df["salario"]*0.1
df_sorted = df.sort_values("salario", ascending=False)
9.3 Matplotlib e Seaborn — Visualizacao
import [Link] as plt
import seaborn as sns
x = range(10)
y = [i**2 for i in x]
[Link](figsize=(8,4))
[Link](x,y,color="blue",linewidth=2,label="y=x^2")
[Link]("x"); [Link]("y"); [Link]("Quadrados")
[Link](); [Link]("[Link]", dpi=150)
sns.set_theme(style="whitegrid")
corr = df[["idade","salario","bonus"]].corr()
[Link](corr, annot=True, cmap="coolwarm")
Pagina 19
Guia Completo de Programacao Python Capitulo 1 — Basico de Python
9.4 Scikit-Learn — Machine Learning
from sklearn.model_selection import train_test_split
from [Link] import StandardScaler
from [Link] import RandomForestClassifier
from [Link] import accuracy_score, classification_report
# X, y = seus dados
X_train,X_test,y_train,y_test = train_test_split(
X, y, test_size=0.2, random_state=42)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = [Link](X_test)
modelo = RandomForestClassifier(n_estimators=100, random_state=42)
[Link](X_train, y_train)
pred = [Link](X_test)
print(accuracy_score(y_test, pred))
print(classification_report(y_test, pred))
Proxim
TensorFlow e PyTorch sao para deep learning. Domine Scikit-Learn antes de ir para redes neurais.
o Nivel
Desafios para Fixacao
1. Analise o dataset Titanic e responda 5 perguntas com Pandas.
2. Crie grafico de barras comparando vendas mensais de 3 produtos.
3. Treine modelo de classificacao para prever spam em emails.
4. Pipeline completo: carga, EDA, pre-processamento, treino e avaliacao.
Pagina 20
Guia Completo de Programacao Python Capitulo 1 — Basico de Python
Parabens por concluir o Guia!
Voce passou por todos os 9 capitulos — de variaveis basicas a machine learning. O proximo passo e a
pratica continua: construa projetos reais, contribua em open source e nunca pare de aprender.
Recurso Link
Documentacao oficial Python [Link]
Exercicios praticos [Link]
APIs publicas para projetos [Link]
Datasets para ML [Link]
Tutoriais interativos [Link]
Pagina 21