Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

2
respostas

Faça como eu fiz: contador de caracteres

def titulo(txt):
    print('=' * len(txt))
    print(txt)
    print('=' * len(txt))

def palavra():
    return input('Digite uma palavra: ').strip()

def contagem(texto):
    print(f'Essa palavra tem {len(texto)} caracteres')

def main():
    titulo('CONTADOR DE CARACTERES')
    texto = palavra()
    contagem(texto)

if __name__ == '__main__':
    main()
2 respostas

Olá, Giovanni. Como vai?

Parabéns pela excelente resolução da atividade! O seu código ficou extremamente limpo, legível e demonstra que você compreendeu com perfeição os conceitos de modularização, retorno de valores e o uso do bloco main como ponto de entrada em Python.

A divisão que você fez do problema em pequenas funções de responsabilidade única (uma para o visual do título, outra para capturar a entrada e outra para exibir a contagem) é uma das melhores práticas no desenvolvimento de software.

Vou destacar os pontos fortes da sua solução e deixar uma pequena dica para enriquecer ainda mais o seu estudo:


Pontos Fortes do seu Código

  • Uso do método .strip(): Essa foi uma excelente sacada de boa prática. Ao utilizar o .strip() na leitura da palavra, você garante que espaços em branco digitados sem querer no início ou no fim do texto sejam eliminados. Sem isso, se o usuário digitasse " Python ", o programa contaria 8 caracteres em vez de 6.
  • Flexibilidade na Função titulo: Fazer a linha decorativa com '=' * len(txt) deixa o visual do seu programa dinâmico. Não importa o tamanho do texto que você passe como argumento, a linha sempre vai se ajustar perfeitamente ao tamanho da palavra.
  • Estrutura if __name__ == '__main__':: Utilizar essa condicional para chamar a função main() é a forma padrão de mercado para escrita de scripts em Python, garantindo que o código só seja executado se o arquivo for rodado diretamente (e não quando importado por outro módulo).

Sugestão de Melhoria: Mudando o Nome para contar_texto

A sua função palavra() captura qualquer texto que o usuário digitar (incluindo frases inteiras com espaços internos).

Se o usuário digitar uma frase como "Aprender Python", o seu programa vai contar os caracteres perfeitamente (incluindo o espaço do meio, que faz parte da string). Para deixar o seu código ainda mais semântico, você poderia alterar o nome da função palavra() para algo mais abrangente, como obter_texto().

Caso o seu objetivo original fosse realmente contar apenas as letras de uma palavra ou frase, ignorando os espaços internos que o usuário possa digitar no meio, você poderia fazer uma pequena alteração na hora de medir o tamanho do texto:

def contagem(texto):
    # Remove todos os espaços internos antes de contar
    texto_sem_espacos = texto.replace(' ', '')
    print(f'Essa palavra/frase tem {len(texto_sem_espacos)} caracteres (ignorando espaços).')

Do jeito que você estruturou, o script já atende perfeitamente ao desafio proposto e está super legível. Continue com esse ótimo hábito de organizar seus códigos usando funções!

Espero que possa ter lhe ajudado!

Obrigado pela dica!