Fundamentos Essenciais de Python: Controle de Fluxo, Tipos e Operações

Estruturas Condicionais

A tomada de decissão em Python utiliza a palavra-chave if para avaliar expressões booleanas. A sintaxe exige dois pontos após a condição e indentação obrigatória para o bloco de código.

valor = 15

if valor > 20:
    print("Acima do limite")
else:
    print("Dentro do limite")

Para múltiplas verificações, emprega-se elif (abreviação de else if):

pontuacao = 85

if pontuacao >= 90:
    conceito = "A"
elif pontuacao >= 80:
    conceito = "B"
elif pontuacao >= 70:
    conceito = "C"
else:
    conceito = "D"

Estruturas aninhadas permitme verificações hierárquicas:

usuario = input("Usuário: ")
senha = input("Senha: ")

if usuario == "admin":
    if senha == "segredo123":
        print("Acesso concedido")
    else:
        print("Senha incorreta")
else:
    print("Usuário não encontrado")

Laços de Repetição com while

O while executa um bloco enquanto sua condição permanecer verdadeira. Cuidado com loops infinitos quando a condição nunca se torna falsa.

indice = 0

while indice < 5:
    print(f"Iteração: {indice}")
    indice += 1

O comando break interrompe imediatamente o ciclo, enquanto continue pula para a próxima iteração:

contador = 0

while True:  # Loop aparentemente infinito
    contador += 1
    if contador == 3:
        continue  # Pula a iteração 3
    if contador > 5:
        break     # Encerra no 6
    print(contador)

Exemplo prático: validação de entrada numérica com tentativas limitadas.

tentativas = 3

while tentativas > 0:
    entrada = input("Digite um número entre 1 e 10: ")
    if entrada.isdecimal() and 1 <= int(entrada) <= 10:
        print("Entrada válida!")
        break
    tentativas -= 1
    print(f"Tentativas restantes: {tentativas}")

Formatação de Strings

Três métodos principais para interpolra valores em textos:

Método format()

modelo = "Produto: {0} | Preço: R${1:.2f} | Estoque: {0}"
resultado = modelo.format("Notebook", 4500.00)

Com nomes de parâmetros para maior clareza:

relatorio = "Funcionário: {nome} | Departamento: {setor} | Anos: {tempo}"
relatorio.format(nome="Carla", setor="TI", tempo=5)

Interpolação com f-strings (Python 3.6+)

produto = "Monitor"
quantidade = 12
preco_unit = 899.90

mensagem = f"Item: {produto} | Qtd: {quantidade} | Total: R${quantidade * preco_unit:.2f}"

Operador % (estilo C)

dados = "Nome: %s | Idade: %d | Salário: R$%.2f" % ("Ana", 28, 5200.50)

Operadores Especiais

Operadores de Atribuição Composta

Operador Equivalente Exemplo
+= x = x + y saldo += deposito
-= x = x - y estoque -= venda
*= x = x * y total *= 1.1
//= x = x // y parcelas //= 3

Operadores de Membro

Verificam presença em sequências:

frase = "Python é uma linguagem poderosa"
print("Python" in frase)      # True
print("Java" not in frase)    # True

numeros = [10, 20, 30, 40]
print(25 in numeros)          # False

Avaliação de Curto-Circuito (and/or)

Quando operandos não são booleanos, and retorna o primeiro valor falso ou o último verdadeiro; or retorna o primeiro valor verdadeiro ou o último falso.

configuracao = usuario_ativo or "visitante"  # Retorna usuario_ativo se existir, senão "visitante"
limite = maximo_conexoes and 100             # Retorna maximo_conexoes se for truthy, senão 100

Fundamentos Computacionais

Sistemas Numéricos

Conversão entre bases numéricas:

decimal = 255

binario = bin(decimal)      # '0b11111111'
octal = oct(decimal)        # '0o377'
hexadecimal = hex(decimal)  # '0xff'

# Conversão inversa
original = int('0b11111111', base=2)  # 255

Unidades de Armazenamento

Unidade Relação Exemplo Prático
bit (b) 0 ou 1 Estado de um transistor
byte (B) 8 bits Representa um caractere ASCII
kilobyte (KB) 1024 B Pequeno arquivo de texto
megabyte (MB) 1024 KB Imagem de alta resolução
gigabyte (GB) 1024 MB Filme em HD

Esquemas de Codificação

ASCII: 128 caracteres (7 bits), cobre inglês básico.

Unicode: Padrão universal com mais de 140.000 caracteres. Implementações:

  • UCS-2: 2 bytes por caractere (limitado a 65.536 caracteres)
  • UCS-4: 4 bytes por caractere (cobre todos os caracteres)

UTF-8: Codificação variável que otimiza espaço:

  • Caracteres ASCII: 1 byte
  • Letras latinas acentuadas: 2 bytes
  • Caracteres asiáticos: 3 bytes
  • Símbolos raros: 4 bytes
texto = "Café ☕"
dados_bytes = texto.encode('utf-8')      # Converte string para bytes
texto_recuperado = dados_bytes.decode('utf-8')  # Converte bytes para string

Tipos de Dados Fundamentais

Strings (str)

Sequências imutáveis de caracteres com métodos especializados:

email = "  contato@empresa.COM  "

# Normalização
email_limpo = email.strip().lower()  # "contato@empresa.com"

# Validação
eh_numerico = "2024".isdecimal()       # True
comeca_com = email_limpo.startswith("contato")  # True

# Substituição
censurado = "O gato comeu o rato".replace("gato", "***")

# Divisão e junção
palavras = "Python;Java;Go;Rust".split(";")
novo_texto = " | ".join(palavras)      # "Python | Java | Go | Rust"

Listas (list)

Coleções ordenadas e mutáveis:

notas = [7.5, 8.0, 6.5, 9.0]

# Operações in-place
notas.append(8.5)           # Adiciona no final
notas.insert(0, 5.0)        # Insere na posição 0
notas.sort(reverse=True)    # Ordena decrescente
ultima = notas.pop()        # Remove e retorna último elemento

Tuplas (tuple)

Coleções ordenadas e imutáveis, ideais para dados fixos:

coordenadas = (-23.5505, -46.6333)  # São Paulo
rgb_vermelho = (255, 0, 0)

# Desempacotamento
latitude, longitude = coordenadas

Dicionários (dict)

Mapeamentos chave-valor com acesso O(1):

funcionario = {
    "matricula": "F-2024-001",
    "nome": "Roberto Silva",
    "departamento": "Engenharia",
    "ativo": True
}

# Acesso e modificação
funcionario["cargo"] = "Senior Developer"
del funcionario["ativo"]

# Iteração segura
for campo, informacao in funcionario.items():
    print(f"{campo}: {informacao}")

Padrões Comuns de Código

Leitura de dados com validação robusta:

def obter_inteiro_positivo(mensagem):
    while True:
        entrada = input(mensagem).strip()
        if entrada.isdecimal() and int(entrada) > 0:
            return int(entrada)
        print("Valor inválido. Tente novamente.")

idade = obter_inteiro_positivo("Informe sua idade: ")

Menu interativo com estrutura aninhada:

while True:
    print("\n1. Consultar saldo")
    print("2. Realizar transferência")
    print("3. Sair")
    
    opcao = input("Escolha: ").strip()
    
    if opcao == "3":
        print("Encerrando...")
        break
    elif opcao == "1":
        print(f"Saldo atual: R$1.500,00")
    elif opcao == "2":
        destino = input("Conta destino: ")
        valor = obter_inteiro_positivo("Valor: ")
        print(f"Transferindo R${valor} para {destino}...")
    else:
        print("Opção inválida")

Tags: Python conditional-statements while-loops string-formatting Unicode

Publicado em 8-1 16:40