Estruturas condicionais são fundamentais em qualquer linguagem de programação, pois permitem que seu programa tome decisões baseadas em condições lógicas. Em Python, utilizamos as palavras-chave if, elif e else para criar ramos de execução. Nesta aula, exploraremos desde o básico até técnicas mais avançadas, incluindo o operador ternário e o aninhamento de condicionais, sempre com foco em boas práticas.

Dominar condicionais é essencial para escrever programas que respondam a diferentes entradas e situações. Vamos começar!

if/elif/else

A estrutura condicional mais básica em Python é o if. Ele avalia uma expressão booleana e, se for verdadeira, executa o bloco de código indentado abaixo dele. Você pode adicionar um else para executar um bloco alternativo quando a condição for falsa. Para múltiplas condições, use elif (abreviação de "else if").

Exemplo prático: determinar a faixa etária de uma pessoa.

idade = 25

if idade < 18:
    print("Menor de idade")
elif idade < 60:
    print("Adulto")
else:
    print("Idoso")

Note que as condições são avaliadas em ordem. A primeira condição verdadeira executa seu bloco e o restante é ignorado. Se nenhuma condição for verdadeira, o bloco else é executado (se presente).

Expressões condicionais (ternário)

Python oferece uma forma concisa de escrever condicionais simples em uma única linha: a expressão ternária. Sua sintaxe é: valor_se_verdadeiro if condicao else valor_se_falso. Isso é útil para atribuições rápidas ou para retornar valores.

Exemplo: converter uma nota em conceito.

nota = 85
conceito = "Aprovado" if nota >= 60 else "Reprovado"
print(conceito)  # Aprovado

Embora prática, evite aninhar ternários, pois isso prejudica a legibilidade. Prefira um if tradicional para condições complexas.

Aninhamento

Você pode colocar uma estrutura condicional dentro de outra. Isso é chamado de aninhamento. Embora seja possível, é importante não exagerar para não tornar o código difícil de ler. Em muitos casos, usar elif ou combinar condições com operadores lógicos (and, or) pode ser mais claro.

Exemplo: verificar se um número é positivo, negativo ou zero.

numero = -5

if numero >= 0:
    if numero == 0:
        print("Zero")
    else:
        print("Positivo")
else:
    print("Negativo")

Aqui, aninhamos um if dentro de outro. Poderíamos reescrever usando elif para evitar aninhamento desnecessário.

Boas práticas

Ao escrever condicionais, siga estas recomendações:

  • Evite aninhamento profundo: mais de 3 níveis de indentação indicam que você pode simplificar a lógica.
  • Use nomes descritivos para variáveis: condições como if usuario_autenticado são mais legíveis que if x == 1.
  • Prefira elif a múltiplos ifs: quando as condições são mutuamente exclusivas, elif deixa claro que apenas um bloco será executado.
  • Evite condições negativas: if not errado pode ser substituído por if correto se possível.
  • Use parênteses para agrupar condições complexas: melhora a legibilidade e evita ambiguidades.
  • Considere dicionários ou polimorfismo: para muitas condições, estruturas de dados podem substituir longas cadeias de if/elif.

Exemplo de código com boas práticas:

def classificar_numero(n):
    if n > 0:
        return "positivo"
    elif n < 0:
        return "negativo"
    else:
        return "zero"

Referências

Exercícios

  1. Escreva um programa que receba um número do usuário e informe se ele é par ou ímpar.

    ✓ Resposta:
    numero = int(input("Digite um número: "))
    if numero % 2 == 0:
        print("Par")
    else:
        print("Ímpar")
  2. Crie uma função que receba três números e retorne o maior deles.

    ✓ Resposta:
    def maior(a, b, c):
        if a >= b and a >= c:
            return a
        elif b >= a and b >= c:
            return b
        else:
            return c
    
    print(maior(10, 5, 8))  # 10
  3. Use uma expressão ternária para converter uma temperatura em Celsius para a mensagem "Quente" se >= 30, senão "Frio".

    ✓ Resposta:
    celsius = 32
    mensagem = "Quente" if celsius >= 30 else "Frio"
    print(mensagem)  # Quente
  4. Reescreva o código abaixo evitando aninhamento desnecessário:

    if x > 0:
        if y > 0:
            print("Ambos positivos")
        else:
            print("x positivo, y não")
    else:
        print("x não é positivo")

    ✓ Resposta:
    if x > 0 and y > 0:
        print("Ambos positivos")
    elif x > 0:
        print("x positivo, y não")
    else:
        print("x não é positivo")
  5. Implemente um sistema de desconto: se o valor da compra for maior que R$ 100, aplique 10% de desconto; se for maior que R$ 200, aplique 20%; caso contrário, sem desconto. Use if/elif/else.

    ✓ Resposta:
    valor = float(input("Digite o valor da compra: "))
    if valor > 200:
        desconto = 0.2
    elif valor > 100:
        desconto = 0.1
    else:
        desconto = 0.0
    
    valor_final = valor * (1 - desconto)
    print(f"Valor final: R$ {valor_final:.2f}")