Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Resolução de Atividades - 08 Identificando palavras mais longas em um texto

import os

def limpar_terminal ():

    input ("Digite qualquer tecla para continuar: ")
    os.system('cls' if os.name == 'nt' else 'clear')

def depurador_texto (texto_separado):

    caracteres_proibidos = ",./!?|%()""''{}[]"

    for palavra in texto_separado:

        for caracter in caracteres_proibidos:

            palavra = palavra.replace (caracter, "")

    return texto_separado

def contador_letras (texto):

    contador = 0
    lista_palavras_longas = []

    for palavra in texto:

        if len (palavra) > 10:

            lista_palavras_longas.append (palavra)

    return lista_palavras_longas

def main ():

    texto_usuario_separado = input ("Digite o texto a ser revisado (ou 0 para sair): ")

    if texto_usuario_separado == "0":

        print ("\nObrigado por utilizar nosso aplicativo")
        limpar_terminal()
        return

    texto_usuario_separado = texto_usuario_separado.split(" ")

    texto_depurado = depurador_texto (texto_usuario_separado)

    palavras_grandes = contador_letras (texto_depurado)

    if palavras_grandes is None: 

        print ("\nNenhuma palavra longa foi encotnrada no texto fornecido.")
        limpar_terminal()
        main()
    
    print ("\nAs palavras longas encontradas foram:\n")

    for palavra in palavras_grandes:

        print (palavra)

    limpar_terminal()
    main()

main()

Dúvida: meus códigos estão ficando muito complexos? Porque observando os gabaritos, eu sinto que estou complicando mais do que precisa o exercício (┬┬﹏┬┬)

2 respostas
solução!

Bom dia, Victor! Como vai?

Sua organização em funções como depurador_texto(), contador_letras() e main() mostra um cuidado muito bom com a separação de responsabilidades, e isso já é um sinal de evolução. Do jeito que você explicou, a sensação de estar “complicando” faz parte do aprendizado, mas sua lógica está bem encaminhada.

Um ponto importante é que, em depurador_texto(), a variável palavra é alterada, mas essa mudança não volta para a lista original, então a limpeza não acontece como esperado. Outro detalhe é que if palavras_grandes is None: não será atendido, porque a função retorna uma lista, mesmo quando ela vem vazia.

Uma dica interessante para o futuro é usar strip() para remover caracteres no começo e no fim das palavras, deixando o código mais direto. Veja este exemplo:

palavras = texto.split()
palavras_longas = []

for palavra in palavras:
    palavra_limpa = palavra.strip(",.!?")
    if len(palavra_limpa) > 10:
        palavras_longas.append(palavra_limpa)

print(palavras_longas)

Esse código separa o texto, remove sinais simples e guarda apenas as palavras com mais de 10 letras. Seu código não está “complexo demais”; ele mostra que você está tentando estruturar bem a solução, e isso vale muito no processo de aprendizagem.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Obrigado pelas dicas, não sabia que o método strip() poderia ser usado com sinais de pontuação também. Muito obrigado S2