Leía do usuário o nome completo de uma pessoa, apresentar todos os sobrenomes caso existam. Use repetição.

Passo 1

O que o problema pede: ler do usuário o nome completo de uma pessoa e apresentar todos os sobrenomes (se existirem).
Informações dadas: o usuário vai digitar uma string com o nome completo (por exemplo: “Maria Clara Silva Souza”).
O que devemos produzir: os sobrenomes dessa pessoa, usando repetição (um laço) para obtê‑los.
Observação importante: aqui vamos adotar a convenção simples e comum em exercícios iniciais: o primeiro token (a primeira palavra) é tratado como o(s) nome(s) próprios inicial(is) e todo o restante (as palavras seguintes) são considerados sobrenomes. Se a string tiver só uma palavra, então não há sobrenome.

Passo 2

Pré‑processamento do texto (por que e como): quando o usuário digita, podem existir espaços extras antes, depois ou entre palavras. Isso atrapalha. Usamos duas operações simples:
  • remover espaços nas extremidades com a função que em muitas linguagens se chama strip() — isso tira espaços iniciais e finais;
  • separar em palavras com split() — isto cria uma lista/array com cada palavra (se houver sequências de espaços, split() normalmente já trata e não cria tokens vazios).
    Exemplo rápido: a string " João Silva Neto " ao aplicar strip() vira “João Silva Neto” e ao aplicar split() vira a lista [“João”, “Silva”, “Neto”].

Passo 3

Como vamos identificar os sobrenomes (regra prática): depois de dividir em palavras (chamarei essa lista de partes), verificamos o tamanho:
  • se houver apenas 0 palavras → usuário não digitou nada;
  • se houver 1 palavra → não há sobrenomes;
  • se houver 2 ou mais → consideramos todas as palavras a partir do índice 1 (segunda palavra) como sobrenomes.
    A parte que usa repetição será justamente percorrer as posições da lista a partir da segunda palavra até o final, acumulando-as para mostrar.

Passo 4

Conceitos de repetição que usaremos (aula curta): existe repetição com “for” e com “while”. Aqui é natural usar um “for” que percorre índices. Em pseudo‑linguagem:
  • para i de 1 até (n‑1): pegar partes[i] e colocar numa lista de sobrenomes.
    Explicando as variáveis:
  • partes é a lista de palavras do nome;
  • n é o comprimento de partes (n = número de palavras);
  • i é o índice que começa em 1 (segunda palavra) e vai até n‑1 (última palavra).
    Esse laço garante que pegamos todas as palavras depois da primeira.

Passo 5

Como montar a saída (juntar as palavras): depois de percorrer e coletar os sobrenomes numa lista, usamos uma operação que junta os elementos com espaço entre eles (em muitas linguagens existe join ou podemos imprimir um por um com espaços). O resultado final será uma única string com todos os sobrenomes separados por espaço, por exemplo “Silva Neto”.

Passo 6

Tratamento de casos especiais e boas práticas:
  • Remover entradas vazias: ao fazer split, filtre tokens vazios se a linguagem deixar tokens vazios; em Python split() já evita isso, mas é bom garantir.
  • Sensibilidade a maiúsculas/minúsculas: não precisamos alterar caso, apenas preservamos o que o usuário digitou.
  • Nomes com hífen (ex.: “Ana Maria Souza‑Pereira”): split separa por espaço e o hífen permanece na palavra — isso é desejável, trata‑se de um único sobrenome composto.
  • Se quiser reconhecer partículas (ex.: “da”, “de”, “dos”) como ligadas ao sobrenome, a regra que usamos (pegar tudo depois da primeira palavra) já mantém essas partículas com os sobrenomes.

Passo 7

Exemplos para fixar:
  • Entrada: “Carlos Alberto de Souza”
    partes = [“Carlos”, “Alberto”, “de”, “Souza”] → sobrenomes (a partir do índice 1) = [“Alberto”, “de”, “Souza”] → saída: “Alberto de Souza”.
  • Entrada: “Luisa”
    partes = [“Luisa”] → sem sobrenomes → informar ao usuário que não há sobrenome.
  • Entrada: " João da Silva " (observe espaços extras)
    após strip e split → [“João”, “da”, “Silva”] → sobrenomes = [“da”, “Silva”] → saída: “da Silva”.

Passo 8

Resumo do algoritmo passo a passo (sem código específico):
  1. Ler a linha inteira digitada pelo usuário.
  2. Aplicar strip() para remover espaços nas extremidades.
  3. Aplicar split() para obter a lista partes de palavras.
  4. Se o número de partes for 0 → avisar “Nenhum nome fornecido”.
  5. Se o número de partes for 1 → avisar “Nenhum sobrenome”.
  6. Caso contrário:
    • criar uma lista vazia sobrenomes;
    • para i variando de 1 até (len(partes)‑1): adicionar partes[i] em sobrenomes;
    • juntar os itens de sobrenomes com espaço e mostrar o resultado.
      Pronto — usamos repetição para coletar os sobrenomes.

Resposta

nome = input("Digite o nome completo: “).strip()
partes = [p for p in nome.split() if p]
if len(partes) == 0:
print(“Nenhum nome fornecido”)
elif len(partes) == 1:
print(“Nenhum sobrenome”)
else:
sobrenomes = []
for i in range(1, len(partes)):
sobrenomes.append(partes[i])
print(” ".join(sobrenomes))

Exercícios relacionados