1
resposta

elif ou else: elif?

Fiz o exercício 5 do capítulo 3 desta maneira:

print("*") print("Bem vindo ao jogo de Adivinhação!") print("*")

numero_secreto = 42

chute_str = input("Digite o seu número: ") print("Você digitou: ", chute_str) chute = int(chute_str)

acertou = chute == numero_secreto maior = chute > numero_secreto menor = chute < numero_secreto

if (acertou): print("Você acertou!") elif(maior): print("Você errou! Seu chute foi maior que o número secreto") elif(menor): print("Você errou! Seu chute foi menor que o número secreto") else: print("Você errou!")

print("Fim do jogo")

O código funcionou perfeitamente. Porém gostaria de saber se esta é uma prática utilizada no mundo Python ou se terei problemas se usar esta estrutura no futuro: colocando elifs depois do if e o else no final.

O código-resposta do professor foi este:

print("*") print("Bem vindo ao jogo de Adivinhação!") print("*")

numero_secreto = 42

chute_str = input("Digite o seu número: ") print("Você digitou " , chute_str) chute = int(chute_str)

acertou = chute == numero_secreto maior = chute > numero_secreto menor = chute < numero_secreto

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")

Eu achei que ficou mais difícil de ler.

1 resposta

Até onde tenho conhecimento, não existe nenhum erro no uso de elifs. Só tome cuidado para não acabar poluindo seu código muito aplicando vários elifs em sequência.

Por exemplo, se temos uma verificação do tipo:

se x = 1:
    faça isso
senão se x = 2 e y = 1:
    faça isso
senão se x = 2 e y = 2:
    faça isso
senão se x = 2 e y = 3:
    faça isso

Nesse caso, pode ser mais legível para um eventual leitor você organizar o código dessa maneira:

se x = 1:
    faça isso
se x = 2:
    se y = 1:
        faça isso
    se y = 2:
        faça isso
    se y = 3:
        faça isso

Eu creio que essa segunda forma deixaria o código menos cansativo de se ler.

Além disso, eu notei que em seus prints você não fez uso das fstrings. Pesquise sobre isso e aplique em seu código, deixa as coisas bem mais legíveis e também é mais fácil de se escrever!