Olá, Vanessa! Como vai?
Que bacana ver que a sua bagagem como Especialista de Processos Sênior te deu esse estalo de ligar os estudos de Python com problemas reais que você já vivenciou em sistemas (como o caso do .lower()). Essa capacidade de antecipar problemas do usuário final (user experience) é o que define uma ótima desenvolvedora.
Sobre a sua pergunta do Exercício 3: "Como faríamos se tivéssemos que validar se a pessoa digitou um número ou caractere especial em vez de uma letra?"
No mundo do desenvolvimento, chamamos isso de higienização ou validação de dados. Tratar entradas inesperadas garante que o algoritmo não tome decisões erradas. Para fazer isso em Python, a forma mais limpa é utilizar os métodos nativos de checagem de texto (strings).
Vamos expandir o seu código adicionando uma árvore de decisão para blindar o seu programa.
O Fluxo Lógico de Validação
Antes de checar se é vogal ou consoante, o algoritmo precisa fazer três perguntas em ordem:
- O usuário digitou mais de uma letra? (Ex: "casa")
- O que foi digitado é um número? (Ex: "5")
- O que foi digitado é uma letra do alfabeto? (Ex: se for "@", não é letra).
Resolução com Validação Completa
Veja como o seu código do Exercício 3 ficaria robusto e profissional aplicando essas validações:
vogais = ['a', 'e', 'i', 'o', 'u']
letra = input('Digite uma letra: ').lower().strip()
# 1. Validação: Checa se o usuário digitou mais de um caractere ou nada
if len(letra) != 1:
print('Entrada inválida! Por favor, digite apenas uma única letra.')
# 2. Validação: Checa se é um número
elif letra.isdigit():
print('Entrada inválida! Você digitou um número, não uma letra.')
# 3. Validação: Checa se é uma letra do alfabeto (elimina caracteres especiais como @, $, #)
elif not letra.isalpha():
print('Entrada inválida! Você digitou um caractere especial.')
# 4. Processo Principal: Se passou por todos os filtros, agora sim testamos a letra
else:
if letra in vogais:
print('É uma vogal!')
else:
print('Não é uma vogal e sim uma consoante!')
Entendendo os novos métodos de processo:
.strip(): Remove espaços em branco acidentais que o usuário possa ter digitado antes ou depois da letra (evita que " a " seja lido como três caracteres).len(letra) != 1: A função len() mede o tamanho do texto. Se for diferente de 1, o usuário tentou trapacear o sistema enviando um texto longo ou apenas apertou Enter sem digitar nada..isdigit(): Retorna True se o texto for composto puramente por números..isalpha(): Retorna True se o texto for composto puramente por letras do alfabeto. Ao usar if not letra.isalpha(), estamos capturando tudo o que não for letra (os caracteres especiais).
Montar esse tipo de validação em camadas é exatamente como desenhar um fluxograma de processo com desvios de conformidade em uma empresa!
O que achou dessa estrutura? Consegue visualizar como esses métodos ajudam a guiar o usuário pelo "caminho feliz" do sistema?