Módulos de Processamento de Strings e Validação
A análise e validação de cadeias de caracteres representam a base para sistemas que interpretam entradas estruturadas. Abaixo estão implementações otimizadas para verificação de padrões, correspondência de marcadores sintáticos e transformação de léxico físico.
# Validação de identificador acadêmico
def validar_matricula(cod):
return len(cod) == 9 and cod.startswith("2025") and cod[7:].isdigit()
# Verificação de balanceamento de colchetes
def validar_notacao(expr):
pilha = []
mapeamento = {')': '(', ']': '[', '}': '{'}
for caractere in expr:
if caractere in mapeamento.values():
pilha.append(caractere)
elif caractere in mapeamento:
if not pilha or pilha.pop() != mapeamento[caractere]:
return False
return not pilha
# Conversão de unidade física para padrão internacional
dicionario_fisico = {
"metro": "m", "quilômetro": "km", "centímetro": "cm", "milímetro": "mm",
"segundo": "s", "minuto": "min", "hora": "h", "quilograma": "kg",
"newton": "N", "joule": "J", "watt": "W", "litro": "L"
}
def padronizar_fisica(texto):
for termo_pt, simbolo_en in dicionario_fisico.items():
texto = texto.replace(termo_pt, simbolo_en)
return texto
# Agregação de frequência em logs de interação
def analisar_chat(registro_texto):
blocos = [linha.strip() for linha in registro_texto.splitlines() if ":" in linha]
estatistica = {}
for bloco in blocos:
participante = bloco.split(":")[0]
estatistica[participante] = estatistica.get(participante, 0) + 1
return estatistica
Gestão de Arquivos e Persistência de Dados
A interoperabilidade entre formatos tabulares e a extração sistemática de mídias digitasi exigem bibliotecas específicas para serialização e leitura de fluxo binário.
# Serialização para formato planilha
import csv
dados_brutos = [["Identificador", "Categoria", "Status"], ["PRJ-001", "Backend", "Ativo"], ["PRJ-002", "Frontend", "Pendente"]]
with open("exportacoes.csv", "w", encoding="utf-8-sig", newline="") as fluxo_saida:
writer = csv.writer(fluxo_saida)
writer.writerows(dados_brutos)
# Manipulação de calendário e cálculo de intervalos
import calendar
def subtrair_intervalo(ano_inicial, mes_inicial, dia_inicial, dias_a_remover):
ano_atual, mes_atual, dia_atual = ano_inicial, mes_inicial, dia_inicial
for _ in range(dias_a_remover):
dia_atual -= 1
while dia_atual < 1:
mes_atual -= 1
if mes_atual < 1:
ano_atual -= 1
mes_atual = 12
dia_atual = calendar.monthrange(ano_atual, mes_atual)[1]
return ano_atual, mes_atual, dia_atual
# Amostragem de fotogramas de vídeo
import cv2, os
def capturar_frames(video_path, diretorio_saida, frequencia_amostragem=15):
os.makedirs(diretorio_saida, exist_ok=True)
camera = cv2.VideoCapture(video_path)
indice = 0
while camera.isOpened():
retorno, quadro = camera.read()
if not retorno: break
if indice % frequencia_amostragem == 0:
caminho_imagem = os.path.join(diretorio_saida, f"frame_{indice}.jpg")
cv2.imwrite(caminho_imagem, quadro)
indice += 1
camera.release()
Desenvolvimento de Interfaces Gráficas (GUI)
O ecossistema tkinter permite a criação rápida de utilitários desktop com layout gerencidao e evantos assíncronos. Os exemplos cobrem autenticação, filtros de consulta e animações de estado.
# Aplicativo de credenciais
import tkinter as tk
from tkinter import messagebox
tentativas_logins = 0
limite_seguranca = 3
def confirmar_acesso():
global tentativas_logins
usuario = entrada_user.get().strip()
senha = entry_pass.get().strip()
if usuario == "gestor" and senha == "sys123":
messagebox.showinfo("Acesso Liberado", "Sessão iniciada com sucesso.")
janela.destroy()
else:
tentativas_logins += 1
resto = limite_seguranca - tentativas_logins
if tentativas_logins >= limite_seguranca:
messagebox.showerror("Bloqueio", "Limite máximo atingido.")
janela.destroy()
else:
messagebox.showwarning("Falha", f"{resto} tentativa(s) restante(s).")
root = tk.Tk()
root.title("Painel de Acesso")
root.geometry("320x180")
tk.Label(root, text="Usuário:").pack(pady=5)
entry_user = tk.Entry(root); entry_user.pack()
tk.Label(root, text="Senha:").pack(pady=5)
entry_pass = tk.Entry(root, show="*"); entry_pass.pack()
tk.Button(root, text="Validar", command=confirmar_acesso, bg="#4CAF50", fg="white").pack(pady=10)
root.mainloop()
# Sistema de filtro ferroviário
import tkinter as tk
from tkinter import ttk
rotas_registradas = [
{"codigo": "VLT-101", "origem": "SP", "destino": "RJ", "horario": "07:30"},
{"codigo": "FER-204", "origem": "BH", "destino": "MG", "horario": "14:15"},
{"codigo": "EXP-330", "origem": "SP", "destino": "Campinas", "horario": "09:00"}
]
def aplicar_filtros():
cidade_partida = txt_origem.get().lower()
destino_final = txt_destino.get().lower()
tabela.delete(*tabela.get_children())
for rota in rotas_registradas:
if cidade_partida and cidade_partida not in rota["origem"].lower(): continue
if destino_final and destino_final not in rota["destino"].lower(): continue
tabela.insert("", "end", values=(rota["codigo"], rota["origem"], rota["destino"], rota["horario"]))
painel = tk.Tk(); painel.geometry("550x300")
tk.Label(painel, text="Origem:").place(x=20, y=20)
txt_origem = tk.Entry(painel, width=18); txt_origem.place(x=70, y=20)
tk.Label(painel, text="Destino:").place(x=20, y=50)
txt_destino = tk.Entry(painel, width=18); txt_destino.place(x=70, y=50)
tk.Button(painel, text="Consultar Rotas", command=aplicar_filtros, bg="#2196F3", fg="white").place(x=180, y=45)
colunas = ("ID", "Saída", "Chegada", "Partida")
tabela = ttk.Treeview(painel, columns=colunas, show="headings", height=10)
for c in colunas: tabela.heading(c, text=c); tabela.column(c, width=120, anchor="center")
tabela.place(x=20, y=90)
painel.mainloop()
Visualização Vetorial e Matemática Computacional
Ferramentas gráficas de baixo nível e bibliotecas numéricas facilitam a representação de trajetórias espaciais e simulações probabilísticas.
# Renderização de iluminação pública em perspectiva linear
import turtle
tela = turtle.Screen(); tela.bgcolor("#cceeff")
pincel = turtle.Turtle(); pincel.speed(0); pincel.hideturtle()
for camada in range(5):
reducao = 1.0 - (camada * 0.18)
offset_x = -220 + (camada * 85)
offset_y = -70 + (camada * 22)
pincel.penup(); pincel.goto(offset_x, offset_y); pincel.pendown()
pincel.width(5 * reducao); pincel.color("#333333")
pincel.setheading(90); pincel.forward(65 * reducao)
pincel.color("#ffdd44"); pincel.dot(14 * reducao)
turtle.done()
# Curva helicoidal tridimensional
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei', 'Arial Unicode MS']
grafico_3d = plt.figure(figsize=(8,5))
eixo = grafico_3d.add_subplot(projection='3d')
theta = np.linspace(0, 8*np.pi, 800)
verticais = np.linspace(0, 10, 800)
radial_x = 2.5 * np.cos(theta)
radial_y = 2.5 * np.sin(theta)
eixo.plot(radial_x, radial_y, verticais, color="#0066cc", linewidth=2.5)
eixo.set_title('Trajetória Espiral Ascendente')
eixo.set_xlabel('Eixo X'); eixo.set_ylabel('Eixo Y'); eixo.set_zlabel('Eixo Z')
plt.show()
# Estimativa de probabilidade acumulada
def calculador_alcance(taxas_acerto):
prob_miss = 1.0
for indicativo in taxas_acerto:
prob_miss *= (1 - indicativo)
return 1 - prob_miss
entrada = [float(valor) for valor in input("Insira precisões (0.0-1.0), separadas por vírgula: ").split(",")]
print(f"Probabilidade total de impacto: {calculador_alcance(entrada)*100:.2f}%")
Automação, Redes e Jogos Interativos
Scripts dedicados manipulam periféricos de entrada, estabelecem comunicação ponto-a-ponto via sockets e executam loops de renderização em tempo real com engine gráfica.
# Comunicação cliente-servidor (TCP Stream)
import socket, threading
def hospedar_rede(porta_local=9090):
serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serv.bind(('127.0.0.1', porta_local))
serv.listen(1)
print(f"Serviço rodando na porta {porta_local}")
conexao, endereco = serv.accept()
def receber_fluxo():
while True:
dados = conexao.recv(1024).decode()
if not dados: break
print(f"[REMOTO] {dados}")
threading.Thread(target=receber_fluxo, daemon=True).start()
try:
while True:
comando = input("[LOCAL] Responda: "); conexao.send(comando.encode())
except KeyboardInterrupt: pass
finally: conexao.close(); serv.close()
hospedar_rede()
# Simulação de interação via mouse/teclado
import time, pyautogui
pyautogui.FAILSAFE = False
mensagem_auto = input("Texto para envio automatizado: ")
print("Alinhe o cursor no campo de destino em 3 segundos...")
time.sleep(3)
pyautogui.typewrite(mensagem_auto, interval=0.05)
time.sleep(0.15); pyautogui.press('enter')
# Motor de jogo tipográfico (Pygame)
import pygame, random
pygame.init(); display = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Rain Typing")
clock = pygame.time.Clock(); paleta = [(255,80,80), (80,80,255), (80,200,80)]
alfabeto = "abcdefghijklmnopqrstuvwxyz"; tipografia = pygame.font.SysFont(None, 38)
class ElementoQueda:
def __init__(self):
self.signo = random.choice(alfabeto)
self.tom = random.choice(paleta)
self.cx, self.cy = random.randint(30, 770), -25
self.gravidade = random.uniform(2.0, 4.0)
self.detonado = False; self.tempos = 0
def evoluir(self):
if not self.detonado: self.cy += self.gravidade
else: self.tempos += 1
def renderizar(self, canvas):
tamanho = int(22 * (1 + self.tempos * 0.25)) if self.detonado else 22
pygame.draw.circle(canvas, self.tom, (int(self.cx), int(self.cy)), tamanho)
label = tipografia.render(self.signo.upper(), True, (255,255,255))
canvas.blit(label, (int(self.cx)-12, int(self.cy)-16))
elementos_ativos, gerador, rodando = [], 0, True
while rodando:
clock.tick(60); display.fill((135, 206, 235))
for evento in pygame.event.get():
if evento.type == pygame.QUIT: rodando = False
if evento.type == pygame.KEYDOWN:
tecla = pygame.key.name(evento.key)
for elem in elementos_ativos:
if elem.signo == tecla and not elem.detonado:
elem.detonado = True; break
gerador += clock.get_delta()
if gerador > 1100:
elementos_ativos.append(ElementoQueda()); gerador = 0
for el in elementos_ativos: el.evoluir(); el.renderizar(display)
elementos_ativos = [e for e in elementos_ativos if not(e.detonado and e.tempos>12 or e.cy>630)]
pygame.display.flip()
pygame.quit()