0% acharam este documento útil (0 voto)
2 visualizações21 páginas

Guia Python Completo

O documento é um guia completo de programação em Python, abrangendo desde conceitos básicos até tópicos avançados, como POO, DSA e automação. Ele inclui exemplos práticos, desafios e dicas para facilitar o aprendizado. O guia é estruturado em capítulos que cobrem sintaxe, variáveis, tipos de dados, condicionais, loops, funções, coleções e mais.

Enviado por

wesleysilva2318
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
2 visualizações21 páginas

Guia Python Completo

O documento é um guia completo de programação em Python, abrangendo desde conceitos básicos até tópicos avançados, como POO, DSA e automação. Ele inclui exemplos práticos, desafios e dicas para facilitar o aprendizado. O guia é estruturado em capítulos que cobrem sintaxe, variáveis, tipos de dados, condicionais, loops, funções, coleções e mais.

Enviado por

wesleysilva2318
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

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

Você também pode gostar