Fundamentos da Biblioteca Padrão (Parte 1)
Uma das maiores características do Python é "Batteries Included" — um conjunto completo de bibliotecas padrão vem com cada instalação do Python. Esta lição cobre quatro dos módulos mais comumente usados:
random,time,syseos. Mesmo aprendendo apenas as funções mais populares de cada um, você resolverá muitos problemas do mundo real.
1. random — Números Aleatórios
import random
# Float aleatório [0, 1)
print(random.random()) # 0.3745...
# Inteiro aleatório [a, b] (inclusive)
print(random.randint(1, 10)) # Inteiro aleatório entre 1 e 10
# Escolha aleatória
fruits = ["maçã", "banana", "laranja", "uva"]
print(random.choice(fruits)) # Escolhe um aleatoriamente
# Amostra aleatória (sem reposição)
print(random.sample(fruits, 2)) # Escolhe 2 aleatoriamente
# Embaralhar ordem
cards = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
random.shuffle(cards)
print(cards) # Ordem é embaralhada
Exemplo: Programa de Sorteio (Dificuldade ⭐)
import random
# Lista de participantes
participants = ["Alice", "Bob", "Charlie", "Diana", "Eve",
"Frank", "Grace", "Henry"]
# 1º prêmio — 1 vencedor
first = random.choice(participants)
print(f"🎉 1º Prêmio: {first}")
# 2º prêmio — 2 vencedores (excluindo 1º)
remaining = [p for p in participants if p != first]
second = random.sample(remaining, 2)
print(f"🎊 2º Prêmio: {' & '.join(second)}")
# 3º prêmio — 3 vencedores
remaining = [p for p in remaining if p not in second]
third = random.sample(remaining, 3)
print(f"🎁 3º Prêmio: {' & '.join(third)}")
2. time — Manipulação de Tempo
import time
# Timestamp atual (segundos desde 1970-01-01)
print(time.time()) # 1758588800.123
# Pausar execução (segundos)
print("Início")
time.sleep(1) # Pausa por 1 segundo
print("1 segundo depois")
# Formatar hora atual
print(time.strftime("%Y-%m-%d %H:%M:%S")) # 2026-06-23 16:00:00
Exemplo: Temporizador (Dificuldade ⭐)
import time
def contagem_regressiva(segundos):
"""Temporizador de contagem regressiva"""
while segundos > 0:
print(f"\r⏱ {segundos} segundos restantes", end="")
time.sleep(1)
segundos -= 1
print("\r⏰ Tempo esgotado!")
# Medir tempo de execução de código
start = time.time()
total = sum(range(1000000))
end = time.time()
print(f"Tempo de execução: {end - start:.4f} segundos")
3. sys — Interação com o Sistema
import sys
# Versão do Python
print(sys.version) # 3.13.0 ...
# Argumentos da linha de comando (ao executar python script.py a b c)
print(sys.argv) # ['script.py', 'a', 'b', 'c']
# Sair do programa
# sys.exit(0) # Saída normal
# Entrada padrão
# line = sys.stdin.readline() # Lê uma linha de entrada
Exemplo: Calculadora de Linha de Comando (Dificuldade ⭐⭐)
import sys
def main():
# Uso: python calculator.py 3 + 5
if len(sys.argv) != 4:
print("Uso: python calculator.py num1 operador num2")
print("Exemplo: python calculator.py 3 + 5")
return
a = float(sys.argv[1])
op = sys.argv[2]
b = float(sys.argv[3])
if op == "+":
result = a + b
elif op == "-":
result = a - b
elif op == "*":
result = a * b
elif op == "/":
if b == 0:
print("Erro: não é possível dividir por zero")
return
result = a / b
else:
print(f"Operador não suportado: {op}")
return
print(f"{a} {op} {b} = {result}")
if __name__ == "__main__":
main()
4. os — Sistema Operacional
import os
# Diretório de trabalho atual
print(os.getcwd()) # D:\projeto
# Mudar diretório
# os.chdir("/tmp")
# Listar conteúdo do diretório
for item in os.listdir("."):
print(item)
# Criar diretório
# os.mkdir("nova_pasta")
# Verificar caminhos
print(os.path.exists("teste.txt")) # True
print(os.path.isfile("teste.txt")) # True
print(os.path.isdir("data")) # True
# Juntar caminhos
path = os.path.join("data", "files", "teste.txt")
print(path) # data/files/teste.txt
Exemplo: Renomeação em Lote de Arquivos (Dificuldade ⭐⭐)
import os
def batch_rename(directory, prefix):
"""Renomeia em lote todos os arquivos .txt em um diretório"""
files = [f for f in os.listdir(directory) if f.endswith(".txt")]
for i, filename in enumerate(files, 1):
old_path = os.path.join(directory, filename)
new_name = f"{prefix}_{i:03d}.txt"
new_path = os.path.join(directory, new_name)
os.rename(old_path, new_path)
print(f" {filename} → {new_name}")
print("Exemplo de renomeação em lote (apenas exibição, não executado):")
print("Iterar todos os arquivos .txt, renomear para formato prefixo_001.txt")
Casos de Uso Comuns
- random: Sorteio, CAPTCHA, geração de dados de teste aleatórios, eventos aleatórios de jogo.
- time: Execução atrasada, temporização de desempenho, temporizadores, tarefas agendadas.
- sys: Ler argumentos da linha de comando, controlar saída do programa, obter informações do ambiente Python.
- os: Gerenciamento de arquivos, operações de diretório, manipulação de caminhos, renomeação em lote.
❓ Perguntas Frequentes
P:
randomé adequado para números aleatórios criptográficos? R: Não.randomusa um PRNG (Gerador de Números Pseudo-Aleatórios), que é previsível. Para números aleatórios criptograficamente seguros (ex.: gerar senhas, tokens), use o módulosecrets. P:time.sleep()bloqueia o programa inteiro. Como faço um atraso não bloqueante? R:sleep()de fato bloqueia a thread atual. Para atrasos não bloqueantes, use multi-threading ou frameworks assíncronos comoasyncio. Para cenários simples,sleep()é suficiente. P: Devo usarosoupathlib? R: Python 3.4+ recomendapathlib(mais orientado a objetos, mais intuitivo), masosé de nível mais baixo e mais abrangente. Usepathlibpara novos projetos; useospara chamadas de sistema de baixo nível.
📖 Resumo
random:randint(),choice(),sample(),shuffle()— seleção e geração aleatóriastime:time()timestamp,sleep()pausa,strftime()formataçãosys:argvargumentos da linha de comando,exit()saída do programaos: Verificações de caminho de arquivo, operações de diretório, renomeação de arquivos- Estes quatro módulos são o "pacote inicial" da biblioteca padrão do Python, usados com frequência no desenvolvimento diário
📝 Atividades
-
Básico (Dificuldade ⭐): Escreva um programa que gere 10 números inteiros aleatórios entre 1 e 100, exiba-os e sua média.
-
Intermediário (Dificuldade ⭐⭐): Escreva uma função geradora de senha
generate_password(length=8)que cria senhas aleatórias contendo maiúsculas, minúsculas e dígitos. Dica: Usestring.ascii_letters + string.digitscomo pool de caracteres; userandom.choice()para escolher caracteres. -
Desafio (Dificuldade ⭐⭐⭐): Escreva uma "ferramenta de estatísticas de pasta." Dado um caminho de diretório (passado via
sys.argv), conte o número de arquivos e o tamanho total para cada tipo de arquivo (extensão). Dica: Useos.listdir()para iterar,os.path.splitext()para extensão,os.path.getsize()para tamanho do arquivo.



