Estruturas de Controle: if, elif e else

Dominando o Python em 1 Ano

Artigo 04 — Estruturas de Controle: if, elif e else

Prof. Ricardo Matos Módulo 1 · Fundamentos da Linguagem · Artigo 4 de 6


Introdução

Um programa que executa sempre as mesmas instruções na mesma ordem tem utilidade limitada. A capacidade de tomar decisões — executar um bloco de código ou outro dependendo de uma condição — é o que torna os programas verdadeiramente úteis. Em Python, isso é feito com as estruturas if, elif e else.


A Estrutura if

A forma mais simples de controle de fluxo:

temperatura = 38.5

if temperatura > 37.5:
    print("Febre detectada.")
    print("Consulte um médico.")

Dois detalhes importantes da sintaxe Python:

  1. A condição não precisa de parênteses (embora sejam permitidos)
  2. O bloco de código é delimitado por indentação — convencionalmente 4 espaços. Não há chaves {} como em C, Java ou JavaScript

Se a condição for False, o bloco é ignorado e a execução continua após ele.


if e else

Para executar um bloco alternativo quando a condição é falsa:

idade = 16

if idade >= 18:
    print("Acesso permitido.")
else:
    print("Acesso negado. Você é menor de idade.")

if, elif e else

Quando há mais de duas possibilidades, use elif (contração de "else if"):

nota = 75

if nota >= 90:
    print("Conceito A")
elif nota >= 80:
    print("Conceito B")
elif nota >= 70:
    print("Conceito C")
elif nota >= 60:
    print("Conceito D")
else:
    print("Reprovado")

Python avalia as condições de cima para baixo e executa apenas o primeiro bloco cuja condição seja verdadeira. Os demais são ignorados.


Condições Compostas

É comum combinar múltiplas condições em um único if:

salario = 5000
tempo_empresa = 3

if salario > 3000 and tempo_empresa >= 2:
    print("Elegível para promoção.")

# Verificando faixas
valor = 150

if 100 <= valor <= 200:
    print("Valor dentro da faixa esperada.")

A notação 100 <= valor <= 200 é um encadeamento de comparações exclusivo do Python — muito mais legível do que valor >= 100 and valor <= 200.


Valores Truthy e Falsy

Em Python, qualquer valor pode ser avaliado em um contexto booleano. Alguns valores são considerados "falsos" por natureza:

# Valores Falsy — avaliados como False
False
None
0
0.0
""        # string vazia
[]        # lista vazia
{}        # dicionário vazio
()        # tupla vazia

Tudo o que não estiver nessa lista é considerado True (Truthy). Isso permite escrever condições mais expressivas:

nome = input("Digite seu nome: ")

if nome:
    print(f"Olá, {nome}!")
else:
    print("Nenhum nome foi digitado.")

lista_de_tarefas = []

if lista_de_tarefas:
    print("Você tem tarefas pendentes.")
else:
    print("Nenhuma tarefa pendente.")

O Operador Ternário

Python permite escrever um if/else simples em uma única linha — chamado de expressão condicional ou operador ternário:

idade = 20
status = "maior de idade" if idade >= 18 else "menor de idade"
print(status)  # maior de idade

A sintaxe é: valor_se_verdadeiro if condição else valor_se_falso

Use com moderação — é elegante para casos simples, mas pode prejudicar a legibilidade em condições complexas.


if com in

Uma combinação muito comum em Python é usar in dentro de condições:

linguagens = ["Python", "JavaScript", "Go", "Rust"]

escolha = "Python"

if escolha in linguagens:
    print(f"{escolha} está na lista.")

# Verificando caracteres em strings
email = "usuario@exemplo.com"

if "@" in email and "." in email:
    print("Formato de e-mail válido.")
else:
    print("E-mail inválido.")

Aninhamento de if

É possível colocar um if dentro de outro — chamado de if aninhado:

tem_conta = True
saldo = 1500
valor_saque = 500

if tem_conta:
    if saldo >= valor_saque:
        saldo -= valor_saque
        print(f"Saque realizado. Saldo restante: R$ {saldo}")
    else:
        print("Saldo insuficiente.")
else:
    print("Você não possui conta cadastrada.")

Aninhamento excessivo dificulta a leitura. Uma boa prática é usar cláusulas de guarda — retornando ou encerrando cedo quando uma condição não é atendida:

def realizar_saque(tem_conta, saldo, valor):
    if not tem_conta:
        print("Sem conta cadastrada.")
        return

    if saldo < valor:
        print("Saldo insuficiente.")
        return

    saldo -= valor
    print(f"Saque realizado. Saldo: R$ {saldo}")

Exemplo Completo: Classificador de IMC

peso = float(input("Digite seu peso (kg): "))
altura = float(input("Digite sua altura (m): "))

imc = peso / altura ** 2

print(f"\nSeu IMC é: {imc:.2f}")

if imc < 18.5:
    print("Classificação: Abaixo do peso")
elif imc < 25.0:
    print("Classificação: Peso normal")
elif imc < 30.0:
    print("Classificação: Sobrepeso")
elif imc < 35.0:
    print("Classificação: Obesidade grau I")
elif imc < 40.0:
    print("Classificação: Obesidade grau II")
else:
    print("Classificação: Obesidade grau III")

Resumo

  • if executa um bloco apenas se a condição for verdadeira
  • elif encadeia condições alternativas
  • else captura todos os casos não cobertos pelas condições anteriores
  • Indentação delimita os blocos — não há chaves
  • Valores falsy: False, None, 0, "", [], {}, ()
  • O operador ternário permite if/else em uma linha para casos simples
  • Evite aninhamento excessivo — prefira cláusulas de guarda

Referências e Leituras Complementares


Prof. Ricardo Matos — Dominando o Python em 1 Ano · Artigo 04 de 52 Próximo: Artigo 05 — Laços de Repetição: for e while


you asked

Sim


claude response