# Variáveis são como caixas para guardar coisas!# Texto (strings) - usamos aspasnome = "Maria"comida_favorita = "pizza"# Números inteirosidade = 10numero_irmaos = 2# Números com decimais (float)altura = 1.45peso = 35.5# Verdadeiro ou Falso (booleanos)gosta_de_chocolate = Truegosta_de_brocolis = False# Mostrar na telaprint(nome) # Mostra: Mariaprint("Eu tenho", idade, "anos") # Mostra: Eu tenho 10 anos
Manipulação de Strings
# Strings são textos entre aspas# Juntar textos (concatenação)primeiro_nome = "Lucas"sobrenome = "Silva"nome_completo = primeiro_nome + " " + sobrenomeprint(nome_completo) # Lucas Silva# Deixar tudo em MAIÚSCULASgrito = "olá mundo".upper()
print(grito) # OLÁ MUNDO# Deixar tudo em minúsculassussurro = "CUIDADO!".lower()
print(sussurro) # cuidado!# Substituir partes do textofrase = "Eu gosto de maçãs"nova_frase = frase.replace("maçãs", "bananas")
print(nova_frase) # Eu gosto de bananas# Formato fácil (f-strings)animal = "gato"idade_animal = 3print(f"Meu {animal} tem {idade_animal} anos")
Estruturas de Controle
# if, elif e else - tomar decisões!idade = 12ifidade < 13:
print("Você é criança!")
elifidade < 18:
print("Você é adolescente!")
else:
print("Você é adulto!")
# Comparaçõestem_dinheiro = Truetem_fome = Trueiftem_dinheiroandtem_fome:
print("Vamos comprar um lanche!")
Funções Básicas
# Funções - como receitas de bolo!# Função simplesdefdizer_oi(nome):
print(f"Oi, {nome}!")
# Usar a funçãodizer_oi("Ana") # Mostra: Oi, Ana!# Função que retorna valordefsomar(a, b):
returna + bresultado = somar(5, 3)
print(resultado) # Mostra: 8
Loops - For
# Loop for - repetir algo várias vezes!# Contar de 1 até 5fornumeroinrange(1, 6):
print(numero)
# Loop em uma listafrutas = ["maçã", "banana", "laranja"]
forfrutainfrutas:
print(f"Eu gosto de {fruta}")
Loops - While
# Loop while - repetir enquanto algo for verdadeirocontador = 1whilecontador <= 5:
print(contador)
contador += 1# Jogo de adivinharnumero_secreto = 7whileTrue:
palpite = int(input("Adivinhe o número (1-10): "))
ifpalpite == numero_secreto:
print("Parabéns! Você acertou!")
break
Listas e Tuplas
# Listas - coleção de itens que pode mudarnotas = [7, 8.5, 9.5, 10]
amigos = ["João", "Maria", "Pedro"]
# Adicionar item no finalamigos.append("Ana")
# Remover itemamigos.remove("Pedro")
# Tuplas - coleção que não pode mudarcoordenadas = (10, 20)
cores_rgb = (255, 128, 0)
# Try/Except - como uma rede de segurança!# Divisão seguratry:
numero = int(input("Digite um número: "))
resultado = 10 / numeroprint(f"10 dividido por {numero} é {resultado}")
exceptValueError:
print("Ops! Digite um número válido!")
exceptZeroDivisionError:
print("Não podemos dividir por zero!")
finally:
print("Fim do programa!")
JSON
# JSON - como guardar informações em formato de textoimport json
# Criar um dicionário de jogadorjogador = {
"nome": "Mario",
"vidas": 3,
"itens": ["cogumelo", "estrela"],
"ativo": True
}
# Salvar em arquivo JSONwithopen('jogador.json', 'w') asarquivo:
json.dump(jogador, arquivo)
# Ler do arquivo JSONwithopen('jogador.json', 'r') asarquivo:
dados = json.load(arquivo)
print(dados["nome"])
Expressões Regulares
# Regex - encontrar padrões em textoimport re
# Procurar um padrãotexto = "Meu número é 123-456-789"padrao = r"\d{3}-\d{3}-\d{3}"# Procura números no formato xxx-xxx-xxx# Encontrar o númeronumero = re.search(padrao, texto)
print(numero.group()) # 123-456-789# Encontrar emails em um textotexto = "Contatos: ana@email.com e joao@email.com"emails = re.findall(r"\w+@\w+\.\w+", texto)
print(emails) # ['ana@email.com', 'joao@email.com']
Decoradores
# Decoradores - como embrulhos mágicos para funções!deffalar_alto(funcao):
defwrapper():
resultado = funcao()
returnresultado.upper()
returnwrapper# Usar o decorador
@falar_altodefdizer_oi():
return"olá, mundo!"print(dizer_oi()) # OLÁ, MUNDO!
Funções Lambda
# Funções Lambda - funções pequenas e rápidas!# Função normaldefdobrar(x):
returnx * 2# Mesma função como lambdadobrar = lambdax: x * 2# Usar com map para dobrar todos os númerosnumeros = [1, 2, 3, 4]
dobrados = list(map(lambdax: x * 2, numeros))
print(dobrados) # [2, 4, 6, 8]# Filtrar números parespares = list(filter(lambdax: x % 2 == 0, numeros))
print(pares) # [2, 4]
Geradores
# Geradores - criam valores um por umdefcontar_ate(n):
i = 1whilei <= n:
yieldii += 1# Usar o geradorfornumeroincontar_ate(5):
print(numero)
# Gerador de tabuadadeftabuada(n):
foriinrange(1, 11):
yieldf"{n} x {i} = {n * i}"forlinhaintabuada(7):
print(linha)
Testes Automatizados
# Testes - verificar se o código funciona corretamenteimport unittest
# Função que vamos testardefsomar(a, b):
returna + b# Classe de testeclassTesteSoma(unittest.TestCase):
deftest_soma_positivos(self):
resultado = somar(2, 3)
self.assertEqual(resultado, 5)
deftest_soma_negativos(self):
resultado = somar(-1, -1)
self.assertEqual(resultado, -2)
# Rodar os testesif__name__ == '__main__':
unittest.main()
Threading
# Threading - fazer várias coisas ao mesmo tempo!import threading
import time
deffazer_tarefa(nome, tempo):
print(f"Começando tarefa {nome}")
time.sleep(tempo) # Simula trabalhoprint(f"Terminando tarefa {nome}")
# Criar threadst1 = threading.Thread(target=fazer_tarefa, args=("A", 2))
t2 = threading.Thread(target=fazer_tarefa, args=("B", 1))
# Iniciar threadst1.start()
t2.start()
# Esperar threads terminaremt1.join()
t2.join()
Web Scraping
# Web Scraping - pegar informações de sitesfrom bs4 import BeautifulSoup
import requests
# Pegar conteúdo de uma página weburl = "https://exemplo.com"pagina = requests.get(url)
# Criar o objeto BeautifulSoupsoup = BeautifulSoup(pagina.content, 'html.parser')
# Encontrar elementostitulos = soup.find_all('h1')
fortitulointitulos:
print(titulo.text)
APIs e Requests
# APIs - conversar com outros programas na internetimport requests
# Fazer uma requisição GETresposta = requests.get('https://api.exemplo.com/dados')
# Verificar se deu certoifresposta.status_code == 200:
dados = resposta.json()
print(dados)
# Enviar dados (POST)novo_item = {'nome': 'Teste', 'valor': 42}
resposta = requests.post('https://api.exemplo.com/criar',
json=novo_item)
Flask
# Flask - criar sites e APIsfrom flask import Flask, jsonify
# Criar aplicaçãoapp = Flask('minha_api')
# Criar uma rota
@app.route('/')
defhome():
return"Bem-vindo à minha API!"
@app.route('/dados')
defget_dados():
dados = {
"nome": "Python",
"tipo": "Linguagem"
}
returnjsonify(dados)
# Rodar o servidorif__name__ == '__main__':
app.run(debug=True)
Banco de Dados SQLite
# SQLite - guardar dados em um bancoimport sqlite3
# Conectar ao bancoconn = sqlite3.connect('dados.db')
cursor = conn.cursor()
# Criar uma tabelacursor.execute('''
CREATE TABLE IF NOT EXISTS usuarios (
id INTEGER PRIMARY KEY,
nome TEXT,
idade INTEGER
)''')
# Inserir dadoscursor.execute('INSERT INTO usuarios (nome, idade) VALUES (?, ?)',
('Ana', 25))
# Salvar mudançasconn.commit()
# Buscar dadoscursor.execute('SELECT * FROM usuarios')
usuarios = cursor.fetchall()
# Fechar conexãoconn.close()
Comandos Git
# Git - controle de versão do código# Iniciar um repositório
$ git init
# Ver status das mudanças
$ git status
# Adicionar arquivos
$ git add arquivo.py
$ git add . # adiciona todos os arquivos# Criar um commit
$ git commit -m "Primeira versão do código"
# Ver histórico
$ git log
# Criar e mudar de branch
$ git branch nova-funcionalidade
$ git checkout nova-funcionalidade
Machine Learning
# Machine Learning - ensinar o computador a aprender!import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# Carregar dadosdados = pd.read_csv('dados.csv')
# Preparar dadosX = dados[['tamanho', 'quartos']]
y = dados['preco']
# Dividir em treino e testeX_treino, X_teste, y_treino, y_teste = train_test_split(X, y)
# Treinar modelomodelo = LinearRegression()
modelo.fit(X_treino, y_treino)
# Fazer previsõesprevisoes = modelo.predict(X_teste)
Context Managers
# Context Managers - gerenciar recursos com segurançaclassMinhaConexao:
def__enter__(self):
print("Abrindo conexão...")
returnselfdef__exit__(self, type, value, traceback):
print("Fechando conexão...")
# Usar o context managerwithMinhaConexao() asconn:
print("Fazendo algo com a conexão")
# Context manager para arquivowithopen('arquivo.txt', 'w') asf:
f.write("Olá, mundo!")
# Decoradores com parâmetrosdefrepetir(vezes):
defdecorador(func):
defwrapper(*args, **kwargs):
for_inrange(vezes):
resultado = func(*args, **kwargs)
returnresultadoreturnwrapperreturndecorador# Usar o decorador
@repetir(3)
defsaudacao(nome):
print(f"Olá, {nome}!")
saudacao("Maria") # Imprime 3 vezes
Geradores Avançados
# Geradores com pipelinedefnumeros():
n = 0whileTrue:
yieldnn += 1defpares(sequencia):
fornuminsequencia:
ifnum % 2 == 0:
yieldnumdefmultiplica_por(sequencia, n):
fornuminsequencia:
yieldnum * n# Usar os geradores em pipelinenums = numeros() # Gera números infinitosnums_pares = pares(nums) # Filtra só os paresnums_dobro = multiplica_por(nums_pares, 2) # Dobra cada número# Pegar os primeiros 5 resultadosfor_, numinzip(range(5), nums_dobro):
print(num)
FastAPI
# FastAPI - criar APIs rápidas e modernasfrom fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
classItem(BaseModel):
nome: strpreco: float# Rota GET simples
@app.get("/")
defler_raiz():
return {"mensagem": "Olá Mundo!"}
# Rota POST com validação
@app.post("/items/")
defcriar_item(item: Item):
returnitem
Pandas
# Pandas - trabalhar com dados em tabelasimport pandas as pd
# Criar um DataFramedados = {
'nome': ['Ana', 'João', 'Maria'],
'idade': [25, 30, 28],
'cidade': ['SP', 'RJ', 'MG']
}
df = pd.DataFrame(dados)
# Filtrar dadosjovens = df[df['idade'] < 30]
# Agrupar e calcular médiamedia_idade = df.groupby('cidade')['idade'].mean()
Numpy
# Numpy - trabalhar com arrays e matemáticaimport numpy as np
# Criar arraysarr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.zeros(5)
arr3 = np.random.rand(5)
# Operações com arrayssoma = arr1 + 10# Soma 10 a cada elementomedia = np.mean(arr1) # Calcula médiamax_val = np.max(arr1) # Encontra maior valor
Asyncio
# Asyncio - programação assíncronaimport asyncio
asyncdeffazer_cafe():
print("Começando a fazer café...")
awaitasyncio.sleep(2) # Simula esperareturn"Café pronto!"asyncdeffazer_torrada():
print("Fazendo torrada...")
awaitasyncio.sleep(1)
return"Torrada pronta!"asyncdefcafe_da_manha():
cafe, torrada = awaitasyncio.gather(
fazer_cafe(),
fazer_torrada()
)
print(cafe, torrada)
# Rodar o programa assíncronoasyncio.run(cafe_da_manha())
Sockets
# Sockets - comunicação entre computadoresimport socket
# Criar um servidorservidor = socket.socket()
servidor.bind(('localhost', 12345))
servidor.listen(5)
whileTrue:
cliente, endereco = servidor.accept()
dados = cliente.recv(1024)
print(f"Recebido: {dados.decode()}")
cliente.send("Mensagem recebida!".encode())
cliente.close()
Input e Output
# Como receber dados do usuário# Pedir um textonome = input("Qual é seu nome? ")
print(f"Olá, {nome}!")
# Pedir um númeroidade = int(input("Quantos anos você tem? "))
print(f"Daqui a 5 anos você terá {idade + 5} anos")
Tratamento de Erros Básico
# Como lidar com erros simplestry:
numero = int(input("Digite um número: "))
resultado = 10 / numeroexceptValueError:
print("Isso não é um número!")
exceptZeroDivisionError:
print("Não posso dividir por zero!")
Arquivos Simples
# Trabalhar com arquivos de texto# Escrever em um arquivowithopen('notas.txt', 'w') asarquivo:
arquivo.write("Primeira linha\n")
arquivo.write("Segunda linha\n")
# Ler de um arquivowithopen('notas.txt', 'r') asarquivo:
conteudo = arquivo.read()
print(conteudo)