Python Study Hub ⚛️

← Intro
Progresso 0 / 12 seções concluídas

👋 Entrada de Dados & F-Strings

Em Python, input() lê texto digitado pelo usuário. As f-strings (prefixo f"...") permitem inserir variáveis diretamente dentro de strings com {variável}.

📌 Básico — Input e f-string

nome = input("Seu nome: ")
print(f"Olá, {nome}!")

📌 Intermediário — Formatação numérica

preco = 19.5
quantidade = 3
total = preco * quantidade
print(f"Total: R$ {total:.2f}")

🧠 Quiz rápido

Qual é a saída de: x = 5; print(f"Valor: {x*2}")?

⚙️ Funções

Funções encapsulam código reutilizável. Use def para definir, return para retornar valor. Podem ter parâmetros opcionais com valores padrão.

📌 Básico — Função com retorno

def somar(a, b):
    return a + b

print(somar(10, 5))

📌 Intermediário — Parâmetro padrão

def saudar(nome, saudacao="Olá"):
    return f"{saudacao}, {nome}!"

print(saudar("Ana"))
print(saudar("João", "Oi"))

🧠 Quiz rápido

O que imprime: def dobro(n): return n*2; print(dobro(4))?

📂 Listas

Listas são coleções ordenadas e mutáveis. Use append() para adicionar, remove() para remover, e índices para acessar elementos.

📌 Básico — Criar e adicionar

frutas = ["Maçã", "Banana"]
frutas.append("Laranja")
print(frutas)

📌 Intermediário — List comprehension

numeros = [1, 2, 3, 4, 5]
pares = [n for n in numeros if n % 2 == 0]
dobros = [n * 2 for n in numeros]
print("Pares:", pares)
print("Dobros:", dobros)

🧠 Quiz rápido

Qual é o resultado de [x**2 for x in range(3)]?

🔑 Dicionários

Dicionários armazenam pares chave-valor. São ideais para estruturar dados como objetos. Acesse com dict["chave"] ou dict.get("chave").

📌 Básico — Criar e acessar

carro = {"marca": "Ford", "ano": 2022}
print(carro["marca"])

📌 Intermediário — Iterar e atualizar

pessoa = {"nome": "Ana", "idade": 25}
pessoa["cidade"] = "SP"

for chave, valor in pessoa.items():
    print(f"{chave}: {valor}")

🧠 Quiz rápido

Como acessar com segurança uma chave que pode não existir?

🔄 Loops

Use for para iterar sobre sequências e while para repetir enquanto uma condição for verdadeira. range(n) gera sequências numéricas.

📌 Básico — For com range

for i in range(3):
    print(f"Número: {i}")

📌 Intermediário — While + break

contador = 0
while contador < 5:
    print(f"Contando: {contador}")
    contador += 1
    if contador == 3:
        print("Parei no 3!")
        break

🧠 Quiz rápido

Quantas vezes o print executa: for i in range(1, 5): print(i)?

⚠️ Tratamento de Erros

Use try/except para capturar erros sem travar o programa. O bloco finally sempre executa, independente de erro.

📌 Básico — Try/Except

try:
    x = 1 / 0
except ZeroDivisionError:
    print("Não divida por zero!")

📌 Intermediário — Múltiplos erros + finally

def dividir(a, b):
    try:
        resultado = a / b
        return resultado
    except ZeroDivisionError:
        print("Erro: divisão por zero")
    except TypeError:
        print("Erro: tipo inválido")
    finally:
        print("Operação finalizada")

dividir(10, 2)
dividir(5, 0)

🧠 Quiz rápido

O bloco finally executa:

🏗️ POO — Classes e Objetos

Classes são moldes para criar objetos. __init__ é o construtor. self referencia a instância atual do objeto.

📌 Básico — Classe simples

class Pessoa:
    def __init__(self, nome):
        self.nome = nome

p = Pessoa("Maria")
print(p.nome)

📌 Intermediário — Método e herança

class Animal:
    def __init__(self, nome):
        self.nome = nome

    def falar(self):
        return "..."

class Cachorro(Animal):
    def falar(self):
        return f"{self.nome} diz: Au au!"

dog = Cachorro("Rex")
print(dog.falar())

🧠 Quiz rápido

O que é self em uma classe Python?

📊 Pandas

Pandas é a biblioteca principal para análise de dados em Python. Um DataFrame é como uma tabela com linhas e colunas nomeadas.

📌 Básico — Criar DataFrame

import pandas as pd
df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
print(df)

📌 Intermediário — Filtro e estatísticas

import pandas as pd

dados = {"nome": ["Ana", "João", "Pedro"],
         "nota": [8.5, 6.0, 9.2]}
df = pd.DataFrame(dados)

aprovados = df[df["nota"] >= 7]
print("Aprovados:")
print(aprovados)
print(f"\nMédia: {df['nota'].mean():.1f}")

🧠 Quiz rápido

Como filtrar um DataFrame df onde a coluna "idade" é maior que 18?

📄 Arquivos

Python usa open() para ler e escrever arquivos. O modo "r" lê, "w" escreve (sobrescreve), "a" adiciona ao final. Use with para fechar automaticamente.

📌 Básico — Ler e escrever

# Escrever em arquivo
with open("notas.txt", "w") as f:
    f.write("Linha 1\n")
    f.write("Linha 2\n")

# Ler arquivo
with open("notas.txt", "r") as f:
    conteudo = f.read()
    print(conteudo)

📌 Intermediário — Ler linha por linha

linhas = ["Ana - 8.5\n", "João - 6.0\n", "Pedro - 9.2\n"]

with open("alunos.txt", "w") as f:
    f.writelines(linhas)

with open("alunos.txt", "r") as f:
    for i, linha in enumerate(f, 1):
        print(f"Linha {i}: {linha.strip()}")

🧠 Quiz rápido

Qual modo do open() adiciona conteúdo ao final sem apagar o existente?

🔍 Expressões Regulares

O módulo re permite buscar padrões em textos. re.search() encontra a primeira ocorrência, re.findall() retorna todas, re.sub() substitui.

📌 Básico — Buscar padrão

import re

texto = "Meu email é [email protected]"
padrao = r"\w+@\w+\.\w+"

resultado = re.search(padrao, texto)
if resultado:
    print("Email encontrado:", resultado.group())

📌 Intermediário — findall e sub

import re

texto = "Os preços são R$10, R$25 e R$100"

# Encontrar todos os valores
valores = re.findall(r"R\$\d+", texto)
print("Valores:", valores)

# Substituir números por ***
censurado = re.sub(r"\d+", "***", texto)
print("Censurado:", censurado)

🧠 Quiz rápido

Qual função do re retorna uma lista com todas as ocorrências do padrão?

🌐 Requests & APIs

A biblioteca requests facilita chamadas HTTP. Use requests.get(url) para buscar dados de APIs. A resposta pode ser convertida para JSON com .json().

📌 Básico — GET em uma API pública

import requests

url = "https://api.github.com/users/github"
resposta = requests.get(url)

if resposta.status_code == 200:
    dados = resposta.json()
    print("Nome:", dados["name"])
    print("Seguidores:", dados["followers"])
else:
    print("Erro:", resposta.status_code)

📌 Intermediário — POST com dados

import requests

url = "https://httpbin.org/post"
payload = {"nome": "Ana", "idade": 25}
headers = {"Content-Type": "application/json"}

resposta = requests.post(url, json=payload, headers=headers)
dados = resposta.json()
print("Enviado:", dados["json"])

🧠 Quiz rápido

Qual código HTTP indica que uma requisição foi bem-sucedida?

✨ Decorators

Decorators são funções que envolvem outras funções para adicionar comportamento sem modificar o código original. Usados com a sintaxe @nome_decorator.

📌 Básico — Criar um decorator

def meu_decorator(func):
    def wrapper():
        print("--- Antes da função ---")
        func()
        print("--- Depois da função ---")
    return wrapper

@meu_decorator
def saudar():
    print("Olá, mundo!")

saudar()

📌 Intermediário — Decorator com timer

import time

def cronometrar(func):
    def wrapper(*args, **kwargs):
        inicio = time.time()
        resultado = func(*args, **kwargs)
        fim = time.time()
        print(f"{func.__name__} levou {fim - inicio:.4f}s")
        return resultado
    return wrapper

@cronometrar
def calcular():
    total = sum(range(1_000_000))
    return total

print("Total:", calcular())

🧠 Quiz rápido

O que a sintaxe @meu_decorator acima de uma função faz?

🚀 Playground Python

Execute código Python diretamente no navegador! Usa Pyodide (Python em WebAssembly). Pandas e NumPy são suportados. Use Ctrl+Enter para executar.
💡 Ctrl+Enter executar · ↑↓ histórico · Pandas e NumPy disponíveis
▸ Aguardando execução...
📲
Instalar Python Study Hub Acesse offline como app no seu dispositivo