1
resposta

08 Identificando palavras mais longas em um texto

import os

TEXTO = ''


def titulo_estilizado(texto):
    print(f'{'*' * (len(texto))}')
    print(texto.upper())
    print(f'{'*' * (len(texto))}')


def titulo():
    os.system('cls')
    titulo_estilizado('Medidor de Palavras')


def menu():
    titulo_estilizado('Menu')
    print('1. Quantidade de Palavras com mais de 10 Letras')
    print('2. Quantidade de Palavras com mais de 5 e menos de 10 Letras')
    print('3. Quantidade de Palavras com menos de 5 Letras')
    print('4. Trocar Texto')
    print('5. Fechar Programa')


def input_de_texto():
    os.system('cls')
    titulo()
    global TEXTO
    TEXTO = input('Cole o texto aqui: ')


def escolher_funcao():
    titulo()
    menu()
    while True:
        try:
            escolha = int(input('\nEscolha uma Opção: '))
            if escolha == 1:
                mais_de_10()
            elif escolha == 2:
                mais_de_5_menos_de_10()
            elif escolha == 3:
                menos_de_5()
            elif escolha == 4:
                trocar_texto()
            elif escolha == 5:
                fechar_programa()
                break
            else:
                print('Escolha Inválida!')
        except ValueError:
            os.system('cls')
            escolher_funcao()
            print('Escolha Inválida!')


def fechar_programa():
    os.system('cls')
    titulo_estilizado('Programa Encerrado')
    exit()


def mais_de_10():
    os.system('cls')
    titulo_estilizado('Quantidade de Palavras com mais de 10 Letras')
    palavras = TEXTO.split()
    total = 0
    palavras_longas = []
    for palavra in palavras:
        if len(palavra) > 10:
            total += 1
            palavras_longas.append(palavra)
    titulo_estilizado(
        f'O texto tem um total de {total} palavras com mais de 10 letras!'
    )
    print(palavras_longas)


def mais_de_5_menos_de_10():
    os.system('cls')
    titulo_estilizado('Quantidade de Palavras com mais de 5 e menos de 10 Letras')
    palavras = TEXTO.split()
    total = 0
    palavras_de_5_a_10 = []
    for palavra in palavras:
        if len(palavra) > 5 and len(palavra) < 10:
            palavras_de_5_a_10.append(palavra)
            total += 1
    titulo_estilizado(
        f'O texto tem um total de {total} palavras com mais de 5 e menos de 10 Letras!'
    )
    print(palavras_de_5_a_10)


def menos_de_5():
    os.system('cls')
    titulo_estilizado('Quantidade de Palavras com menos de 5 Letras')
    palavras = TEXTO.split()
    total = 0
    palavras_curtas = []
    for palavra in palavras:
        if len(palavra) < 5:
            total += 1
            palavras_curtas.append(palavra)
    titulo_estilizado(
        f'O texto tem um total de {total} palavras com menos de 5 Letras!'
    )
    print(palavras_curtas)


def trocar_texto():
    os.system('cls')
    titulo_estilizado('Trocar Texto')
    input_de_texto()
    os.system('cls')
    escolher_funcao()


def main():
    titulo()
    input_de_texto()
    escolher_funcao()


if __name__ == '__main__':
    main()
1 resposta

Olá, Daniel, como vai?

Seu código atende plenamente ao que foi proposto no exercício e demonstra um ótimo domínio sobre funções, manipulação de strings e controle de fluxo com estruturas de repetição e tratamento de erros. A implementação de um menu interativo e a organização do código em funções distintas tornam o programa modular e fácil de ler. É interessante observar como você expandiu a ideia original ao adicionar diferentes faixas de contagem de caracteres, transformando um exercício simples em uma ferramenta mais completa de análise de texto.

Parabéns pelo empenho em criar uma interface organizada no terminal e por compartilhar sua solução com a comunidade, continue praticando dessa forma.

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