Condicionais
Esta aula ensina estruturas condicionais em Python, incluindo if/elif/else, expressões ternárias e aninhamento, com foco em boas práticas para código claro e eficiente. O conteúdo é progressivo, com exemplos práticos e exercícios com respostas em formato interativo.
As estruturas condicionais são fundamentais em qualquer linguagem de programação, permitindo que o programa tome decisões baseadas em condições lógicas. Em Python, as palavras-chave if, elif e else são usadas para implementar esse controle de fluxo. Nesta aula, vamos explorar desde o básico até técnicas mais avançadas, incluindo o operador ternário e boas práticas para escrever condicionais legíveis e eficientes.
Dominar condicionais é essencial para criar programas que se adaptam a diferentes situações. Você aprenderá a avaliar expressões booleanas, combinar condições com operadores lógicos e estruturar decisões de forma clara. Vamos começar!
if/elif/else
A estrutura if avalia uma expressão booleana e executa um bloco de código se ela for verdadeira. Opcionalmente, podemos usar elif (abreviação de "else if") para testar múltiplas condições, e else para capturar qualquer caso não atendido pelas condições anteriores. A sintaxe básica é:
if condicao1:
# código executado se condicao1 for True
elif condicao2:
# código executado se condicao1 for False e condicao2 for True
else:
# código executado se todas as condições anteriores forem FalseÉ importante notar que Python usa indentação para definir blocos de código (geralmente 4 espaços). Diferente de outras linguagens, não usamos chaves. Exemplo prático:
nota = 85
if nota >= 90:
conceito = 'A'
elif nota >= 80:
conceito = 'B'
elif nota >= 70:
conceito = 'C'
else:
conceito = 'D'
print(f"Conceito: {conceito}") # Saída: Conceito: BVocê pode usar operadores lógicos como and, or e not para combinar condições. Por exemplo:
idade = 25
if idade >= 18 and idade <= 65:
print("Adulto em idade ativa")Expressões condicionais (ternário)
Python oferece uma forma concisa de escrever condicionais de uma única linha: a expressão ternária. A sintaxe é:
valor_se_verdadeiro if condicao else valor_se_falsoIsso é útil para atribuições simples. Exemplo:
idade = 20
status = "Maior de idade" if idade >= 18 else "Menor de idade"
print(status) # Maior de idadeEmbora seja conciso, evite usar ternários aninhados ou muito complexos, pois podem prejudicar a legibilidade. Prefira if tradicional para múltiplas condições.
Aninhamento
Podemos colocar estruturas condicionais dentro de outras, criando aninhamento. Isso é útil para verificar condições hierárquicas, mas deve ser usado com moderação para não tornar o código difícil de ler. Exemplo:
usuario_autenticado = True
nivel_acesso = "admin"
if usuario_autenticado:
if nivel_acesso == "admin":
print("Acesso total")
else:
print("Acesso limitado")
else:
print("Faça login")Uma alternativa para evitar aninhamento excessivo é usar operadores lógicos ou funções auxiliares. Por exemplo, o código acima poderia ser reescrito como:
if not usuario_autenticado:
print("Faça login")
elif nivel_acesso == "admin":
print("Acesso total")
else:
print("Acesso limitado")Isso melhora a legibilidade ao eliminar um nível de indentação.
Boas práticas
Escrever condicionais claras é essencial para a manutenção do código. Aqui estão algumas recomendações:
- Evite comparações com True/False: em vez de
if x == True, useif x(pois Python avalia o valor verdadeiro). - Use nomes significativos: variáveis booleanas como
eh_maioroutem_permissaotornam a condição autoexplicativa. - Prefira
elifa múltiplosifs: se as condições são mutuamente exclusivas,elifevita verificações desnecessárias. - Simplifique condições complexas: extraia partes da condição para variáveis com nomes descritivos.
- Evite aninhamento profundo: use cláusulas de guarda (early return) ou reestruture a lógica.
- Cuidado com precedência de operadores: use parênteses para explicitar a ordem de avaliação.
Exemplo de aplicação de boas práticas:
# Ruim
if (x > 0 and y > 0) or (x < 0 and y < 0):
print("Mesmo sinal")
# Melhor
mesmo_sinal = (x > 0 and y > 0) or (x < 0 and y < 0)
if mesmo_sinal:
print("Mesmo sinal")Exercícios
Escreva um programa que leia um número inteiro e diga se ele é par ou ímpar.
✓ Resposta:numero = int(input("Digite um número: ")) if numero % 2 == 0: print("Par") else: print("Ímpar")Dada a variável
idade = 17, use uma expressão ternária para definir a stringcategoriacomo "Menor" se idade < 18, caso contrário "Maior".✓ Resposta:idade = 17 categoria = "Menor" if idade < 18 else "Maior" print(categoria) # MenorEscreva um trecho de código que, dada uma variável
senha, verifique se ela tem pelo menos 8 caracteres e contém um dígito. Use operadores lógicos.✓ Resposta:senha = "abc12345" tem_digito = any(c.isdigit() for c in senha) if len(senha) >= 8 and tem_digito: print("Senha forte") else: print("Senha fraca")Reescreva o código a seguir usando
elifpara evitar aninhamento desnecessário:if a > 0: if b > 0: print("Ambos positivos") else: print("A positivo, B não") else: print("A não é positivo")✓ Resposta:if a <= 0: print("A não é positivo") elif b > 0: print("Ambos positivos") else: print("A positivo, B não")Crie uma função
classificar_nota(nota)que retorna o conceito (A, B, C, D ou F) baseado na nota (0-100). Use if/elif/else.✓ Resposta:def classificar_nota(nota): if nota >= 90: return 'A' elif nota >= 80: return 'B' elif nota >= 70: return 'C' elif nota >= 60: return 'D' else: return 'F' print(classificar_nota(85)) # B