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.
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):
- Ler a linha inteira digitada pelo usuário.
- Aplicar strip() para remover espaços nas extremidades.
- Aplicar split() para obter a lista partes de palavras.
- Se o número de partes for 0 → avisar “Nenhum nome fornecido”.
- Se o número de partes for 1 → avisar “Nenhum sobrenome”.
- 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))
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))