⬅ Voltar ao Dashboard Capítulo 4 — Condições

🧱 Estruturas Aninhadas

Seção 4.3 — if dentro de else: combinando condições

📞 Conta de telefone com três faixas

Nem sempre nossos programas serão tão simples. Muitas vezes, precisaremos aninhar vários ifs para obter o comportamento desejado. Aninhar, nesse caso, é utilizar um if dentro de outro.

Imagine uma operadora de telefonia com três faixas de preço: até 200 minutos custa R$ 0,20/min; entre 200 e 400 minutos, R$ 0,18/min; acima de 400 minutos, R$ 0,15/min:

Listagem 4.6 — Conta de telefoneminutos = int(input("Quantos minutos você utilizou este mês: ")) if minutos < 200: preço = 0.20 else: if minutos < 400: preço = 0.18 else: preço = 0.15 print("Você vai pagar este mês: R$%6.2f" % (minutos * preço))

Observe que o segundo if está dentro do bloco do primeiro else — por isso ele tem mais recuo. A condição minutos < 400 só será avaliada se a primeira (minutos < 200) for falsa.

💡 O alinhamento do texto é muito importante em Python. Um if dentro de um else precisa ter recuo adicional. Erros de indentação causam comportamento inesperado ou erros de execução.

🛒 Categorias de produto

Vejamos um exemplo com cinco categorias, onde cada uma tem um preço diferente:

CategoriaPreço
1R$ 10,00
2R$ 18,00
3R$ 23,00
4R$ 26,00
5R$ 31,00
Listagem 4.7 — Categoria x preço (aninhado)categoria = int(input("Digite a categoria do produto: ")) if categoria == 1: preço = 10 else: if categoria == 2: preço = 18 else: if categoria == 3: preço = 23 else: if categoria == 4: preço = 26 else: if categoria == 5: preço = 31 else: print("Categoria inválida, digite um valor entre 1 e 5!") preço = 0 print("O preço do produto é: R$%6.2f" % preço)

Note como o programa vai se deslocando cada vez mais para a direita a cada else. Isso é chamado de problema do deslocamento (ou "pirâmide da morte") e torna o código difícil de ler. A próxima aula mostra a solução elegante com elif.

✏ Exercício

Exercício 4.7

Rastreie o programa da Listagem 4.7. Para cada categoria digitada (1 a 5 e um valor inválido), anote quais linhas do programa serão executadas. Verifique a tabela abaixo:

CategoriaLinhas executadas
11, 2, 3, 19
21, 2, 4, 5, 6, 19
31, 2, 4, 5, 7, 8, 9, 19
41, 2, 4, 5, 7, 8, 10, 11, 12, 19
51, 2, 4, 5, 7, 8, 10, 11, 13, 14, 15, 19
outras1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 18, 19