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.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!