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

[Sugestão] Com validação persistente

''' Extrai as três primeiras e as três últimas letras de uma string
Input (str) 
Output (str)  1: primeiras três letras da string fornecida
              2: últimas três letras da string fornecida
'''
def extract_letters(keyword):
  # check if the keyword is at least three letters long
  if len(keyword) < 3:
    return 
    
  primeiras_3_letras = keyword[:3]
  ultimas_3_letras = keyword[-3:]
  return primeiras_3_letras, ultimas_3_letras

while True:
  palavra_chave = input('Digite a palavra-chave: ')
  try:
    primeiras_3, ultimas_3 = extract_letters(palavra_chave)
    print(f'Primeiras: {primeiras_3}\nÚltimas: {ultimas_3}')
    break
  except:
    print('A palavra-chave deve conter ao menos três letras.')
    input('Tecle ENTER para retornar.')
    os.system('cls')
2 respostas
solução!

Olá, Eduardo! Tudo bem?

Parece que você está no caminho certo com o seu código. No entanto, há um pequeno ajuste que pode ser feito para garantir que a validação funcione corretamente. O problema está na forma como o try e o except estão sendo usados. No seu código atual, o except não está capturando o erro que você espera, porque a função extract_letters retorna None quando a palavra tem menos de três letras, e isso não gera uma exceção.

Para corrigir isso, você pode alterar a função para lançar uma exceção quando a palavra não tiver pelo menos três letras. Veja como você pode fazer isso:

def extract_letters(keyword):
    # check if the keyword is at least three letters long
    if len(keyword) < 3:
        raise ValueError("A palavra-chave deve conter ao menos três letras.")
    
    primeiras_3_letras = keyword[:3]
    ultimas_3_letras = keyword[-3:]
    return primeiras_3_letras, ultimas_3_letras

while True:
    palavra_chave = input('Digite a palavra-chave: ')
    try:
        primeiras_3, ultimas_3 = extract_letters(palavra_chave)
        print(f'Primeiras: {primeiras_3}\nÚltimas: {ultimas_3}')
        break
    except ValueError as e:
        print(e)
        input('Tecle ENTER para tentar novamente.')

Com essa modificação, a função extract_letters lança uma exceção ValueError quando a palavra não tem pelo menos três letras. Assim, o bloco except captura essa exceção e exibe a mensagem apropriada.

Bons estudos!

Perfeito! Obrigado.