Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Função de validação usando re.findall e re.fullmatch

#==============================================================================
name_std = r'^[A-Z][a-z]*'  # Padrão para os nomes
num_std = r'\d{4}'          # Padrão para os anos


''' Essa função recebe uma string com os dados de paciente e retorna uma lista 
    formatada desses dados validados.
Input (str)   - String com os dados do paciente:
                deve conter nome, sobrenome, ano de nascimento (yyyy) e as 
                primeiras letras devem ser maiúsculas.
Output (list) - Lista formatada ou (None) em caso de dados inválidos
'''
def monta_lista_com_validacao(raw_data):
  data_list = []  # Lista final
  i = 0           # Contador de iterações
  
  # elimina o dash (-), se presente
  raw_data = raw_data.replace('-', '')  

  # Cria uma lista temporária de palavras separadas a partir da input string
  data_list_temp = raw_data.split()
  # print('List: ', data_list)  # Test

  # Monta a lista final validando a cada etapa. 
  for item in data_list_temp:
    i += 1
    if i == 1:
      # Valida o primeiro nome (a primeira letra deve ser maiúscula)
      if re.findall(name_std, item):
        data_list.append(f'{i}º nome: {item}')
        continue
      else:
        return None
    else:
      # Verifica a presença de sobrenome
      if i == 2 and not re.findall(name_std, item):
        return None
      if not re.findall(name_std, item) and not re.fullmatch(num_std, item):
        return None
      # Valida demais nomes e o sobrenome (a primeira letra deve ser maiúscula)
      elif re.findall(name_std, item) and not re.fullmatch(num_std, item):
        data_list.append(f'{i}º nome (ou sobrenome): {item}')
        continue
      # Se tudo ok até aqui, valida o ano de nascimento no formato (yyyy)
      elif re.fullmatch(num_std, item):
        data_list.append(f'Ano de Nascimento: {item}')
        return data_list
    
# Coleta "crua" de dados do paciente
dados_paciente_str = input('Digite o nome completo e o ano de nascimento do paciente: ')

validated_list = monta_lista_com_validacao(dados_paciente_str)
if validated_list:
  for data_item in validated_list:
    print(data_item)
else:
  print('Formato inválido!')
1 resposta
solução!

Olá Eduardo! Como vai?

Dei uma olhada no seu código e ele está bem organizado e condizente com o que foi passado pelo instrutor, e isso mostra o seu comprometimento com o curso.

Caso surjam quaisquer dúvidas eu estarei à sua disposição.

Abraços e bons estudos!