1
resposta

[RESPOSTA]

identificando_palavras_longas.py

import re

def identificador_palavra(texto):
    pattern = r'[A-Za-zÀ-ÖØ-öø-ÿÇç]{11,}'
    return re.findall(pattern, texto)
    
main.py

from identificando_palavras_longas import identificador_palavra

texto = input("Digite seu texto: ")
resultado = identificador_palavra(texto)

if not resultado:
    print("Nenhuma palavra longa foi encontrada no texto.")
else:
    print(f"Palavras longas encontradas: {resultado}")

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Oi, MAURICIO! Como vai?

Você fez um bom uso de re.findall com um range que contempla acentuação. Pontos importantes: usar \b ajuda a garantir limites de palavra, e você pode simplificar a classe de letras com r'\b[^\W\d_]{11,}\b' (apenas letras Unicode) junto de flags=re.UNICODE. Ex.: re.findall(r'\b[^\W\d_]{11,}\b', texto).

Uma dica interessante para o futuro é filtrar e também pegar a palavra mais longa com max(..., key=len). Veja este exemplo:


import re

def palavras_longas(texto):
    padrao = r'\b[^\W\d_]{11,}\b'
    return re.findall(padrao, texto, flags=re.UNICODE)

def maior_palavra(texto):
    ps = palavras_longas(texto)
    return max(ps, key=len) if ps else None

t = input('Digite seu texto: ')
resultado = palavras_longas(t)
print('Palavras longas:', resultado)
print('Maior palavra:', maior_palavra(t))

O codigo acima busca apenas letras ([^\W\d_]), respeita bordas com \b e usa max para encontrar a maior.

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