Olá, Natalia. Como vai?
Parabéns pelo miniprojeto! Seu código está muito bem estruturado e resolve um problema comum de forma inteligente: a distinção entre tamanho da string e quantidade de letras.
O uso das funções separadas demonstra que você já compreendeu o conceito de responsabilidade única. Cada função faz apenas uma coisa, o que torna o código fácil de ler e manter.
Gostaria de destacar alguns pontos técnicos que ficaram ótimos:
- Tratamento de Strings: O uso do
.replace() encadeado na função contar_letras é uma solução muito eficaz para "limpar" a palavra antes da contagem. - Validação de Entrada: Ao usar
if texto:, você protege seu programa contra erros caso o usuário apenas aperte "Enter" sem digitar nada. É uma excelente prática de robustez.
Dica de Refinamento: Otimizando o código
Para deixar seu código ainda mais "limpo" (seguindo o estilo Clean Code), você pode realizar as substituições em uma única linha ou usar uma abordagem mais abrangente para remover qualquer caractere que não seja uma letra.
Veja esta alternativa usando o método .isalpha(), que verifica se cada caractere é de fato uma letra:
def contar_letras(texto):
# Cria uma nova string apenas com caracteres que são letras
somente_letras = [char for char in texto if char.isalpha()]
return len(somente_letras)
Por que isso é interessante?
Dessa forma, sua função não precisaria de vários .replace() caso o usuário digitasse, por exemplo, um ponto final ou um número por engano. O programa contaria apenas as letras de $A$ a $Z$.
Sua lógica de programação está muito sólida. Já pensou em expandir esse miniprojeto para contar também quantas vogais e consoantes existem na palavra?
Espero que possa ter lhe ajudado!