1
resposta

Aquecendo na programacao, Questao 3

Eu digitei no pycharm o seguinte codigo

letra = str(input('Digite uma letra: ')).lower()
if letra == 'a' or 'e' or 'i' or 'o' or 'u':
    print('Esta letra é uma vogal')
else:
    print('Esta letra é uma consoante')

Este codigo me retorna sempre 'Esta letra é uma vogal', independente do que digito. Eu entendi a soluçao da professora, mas o que fiz de errado?

1 resposta

Oi, Álvaro! Tudo bem?

Assim como muitas outras linguagens de programação, o Python não consegue interpretar a condição if letra == 'a' or 'e' or 'i' or 'o' or 'u': da maneira que pode parecer intuitiva para nós.

O Python, entende da seguinte forma: "Se a letra for igual a 'a', ou se 'e' for verdadeiro, ou se 'i' for verdadeiro, ou se 'o' for verdadeiro, ou se 'u' for verdadeiro". No final das contas, toda essa expressão é transformada, involuntariamente, em uma única string.

Como strings não vazias são consideradas como verdadeiras no Python, a condição sempre retornará verdadeiro, e por isso sempre imprimirá "Esta letra é uma vogal". Para contornar essa situação, teremos que verificar se a variável letra é igual a alguma das vogais 'a', 'e', 'i', 'o' ou 'u' desta forma:

letra = str(input('Digite uma letra: ')).lower()
if letra == 'a' or letra == 'e' or letra == 'i' or letra == 'o' or letra == 'u':
    print('Esta letra é uma vogal')
else:
    print('Esta letra é uma consoante')

Ao separar as condições em nosso IF, nos certificamos que todas as análises serão devidamente feitas antes de dizer se a letra é vogal ou consoante!

Espero ter ajudado, Álvaro! Se surgirem novas dúvidas, fico à disposição.

Um forte abraço.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!