Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Dúvida] Diferença entre uso de múltiplos if vs elif

Vi a última aula e acredito que entendi o uso do elif e suas funcionalidades básicas. Mas minha dúvida é, ao comparar com o uso de vários ifs ou o uso com elif, a segunda opção é preferível apenas para simplificação do código ou por algo mais essencial como "se não for feito dessa forma, pode dar algum erro"?

media = float(input('Digite a média: '))

if media >= 6.0:
  print('Aprovado(a)')
if 6.0 > media >= 4.0:
  print('Recuperação')
if media < 4.0:
  print('Reprovado(a)')
media = float(input('Digite a média: '))

if media >= 6.0
    print('Aprovado')
elif 4.0 > media <= 6.0
    print('Recuperação')
else:
    print('Reprovado')	
1 resposta

Olá Lucas, tudo bem?

Boa pergunta! A diferença vai além da estética, tem impacto real no comportamento do código.

Quando você usa vários if separados, o Python avalia todas as condições, uma a uma, independentemente do que aconteceu antes. Já com elif, assim que uma condição for verdadeira, as demais são ignoradas automaticamente.

No seu caso específico, as condições são mutuamente exclusivas (uma média não pode ser ao mesmo tempo >= 6.0 e < 4.0), então o resultado final acaba sendo o mesmo. Mas imagine uma situação em que as faixas se sobreponham ou em que o valor possa ser modificado dentro do bloco: aí múltiplos if podem executar mais de um bloco quando você esperava só um.

Tem também o ganho de desempenho: com elif, o Python para de verificar assim que encontra a primeira condição verdadeira. Com vários if, ele continua checando todas, mesmo que já tenha encontrado uma correspondência.

Então, para situações de múltiplas faixas excludentes como essa de notas, elif é a escolha mais adequada, não só por clareza, mas por expressar a intenção do código corretamente.

Ah, notei também que no segundo trecho do seu código a condição do elif ficou 4.0 > media <= 6.0, o que na prática captura médias abaixo de 4.0 (que deveriam ir para o else). Vale revisar essa lógica para garantir que a faixa de recuperação esteja correta.

Conte com a Alura para evoluir seus estudos. Em caso de dúvidas, fico à disposição.

Bons estudos!

Sucesso

Imagem da comunidade