1
resposta

Quando eu devo usar ELIF ? Estou confuso!

No código abaixo eu posso substituir o "elif" por else e o código irá funcionar corretamente, então por que eu deveria usar elif?

if(acertou): print("Parabéns! Você acertou!")

else: if(maior): print("O seu chute foi maior do que o número secreto!")

elif(menor): print("O seu chute foi menor do que o número secreto!")

print("Fim do jogo")

1 resposta

Olá Matheu, Tudo bem?

Acredito que o professor tenha usado o elif apenas para fins de explicação. No caso desse exercício, só há duas possíveis alternativas: ou o número é maior ou ele é menor (já que se ele for igual, ele acertou.

Uma outra forma de escrever esse código seria como abaixo:

if(acertou):
    print("Parabéns! Você acertou!")
elif(maior): 
    print("O seu chute foi maior do que o número secreto!")
#elif(menor): 
else:
    print("O seu chute foi menor do que o número secreto!")

print("Fim do jogo")

Deixei o elif(menor) comentado para mostrar que ele poderia ser utilizado também. Mas essa lógica tem um problema: imagina que eu quero ajustar alguma coisa quando o usuário erra. Logo, eu teria que repetir o código, o que não é muito bom. Logo, vou fazer uma mudança aqui para mostrar como podemos fazer isso. Imagine que você queira mostrar uma mensagem dizendo que ele errou antes de dar a dica se é menor ou maior.

if(acertou):
    print("Parabéns! Você acertou!")
else:
    print("Você errou!")
    if(maior): 
        print("O seu chute foi maior do que o número secreto!")
    else:
        print("O seu chute foi menor do que o número secreto!")

print("Fim do jogo")

Outra possível melhoria seria não fazer o print dependendo especificamente do chute ser maior ou menor, mas controlar isso de forma mais "simples":

if(acertou):
    print("Parabéns! Você acertou!")
else:
    print("Você errou!")
    msg_chute_erro = "menor"
    if(maior): 
        msg_chute_erro = "maior"
    print(f"O seu chute foi {msg_chute_erro} do que o número secreto!")

print("Fim do jogo")

Desse jeito, eu crio uma variável que começa com o texto "menor", e muda para "maior", caso o chute tenha sido maior. E sempre imprime a mensagem usado essa variável.

Um ponto notar é que usei a nova notação do Python 3 para formatação, que é o equivalente a:

print("O seu chute foi {} do que o número secreto!".format(msg_chute_erro))

Espero que a explicação tenha ajudado. Se ela sanou sua dúvida, não se esqueça de marcar a resposta como solução.

Cussa