# Last edited on 2018-03-27 19:36:41 by stolfilocal

def eh_letra(c):
  """Dada uma cadeia c de comprimento 1, Determina se eh letra (maiuscula ou minuscula) sem acentos."""
  
  return (c >= "a" and c <= "z") or (c >= "A" and c <= "Z")

def prox_palavra(f,k):
  """Retorna a primeira palavra de f que comeca na posicao k
  ou em diante.  Tambem retorna a posicao imediatamente apos
  a palavra encontrada. 
  
  Se nao houver mais palavras em f, retorna a cadeia vazia e zero."""
 
  n = len(f)
  
  # Avanca k ate o inicio de uma palavra:
  while k < n and not eh_letra(f[k]):
    k = k + 1
  
  # Neste ponto k >= n ou f[k] eh letra.
  if k >= n:
    return ("", 0)
  
  # Procura o fim da palavra:
  j = k + 1;
  while j < n and eh_letra(f[j]):
    j = j + 1
    
  # Retorna a palavra e a posicao logo apos o fim dela:
  return (f[k:j],j)


def mostra_palavras(f):
  """Escreve na tela as palavras da frase f, uma 
  em cada linha."""
  kp = 0 # Proxima posicao de f a examinar.
  while True:
    # Pega a proxima palavra da frase e a posicao apos a mesma:
    (pa,kp) = prox_palavra(f,kp)
    if pa == "":
      break
    print(pa)
 
while True:
  fr = input("frase? ")
  if fr == "@":
    break
  mostra_palavras(fr)
  
print("tchau!")

  
