Faça um programa, que contenha subprogramas, que leia da entrada padrão nomes completos, compostos de nome e sobrenome(s), de pessoas até que uma string vazia seja lida. Escreva na saída padrão todos os nomes e sobrenomes com mais de dois caracteres que ocorreram mais que uma vez. Mostre-os ordenados alfabeticamente. Neste caso implemente subprograma contendo um dos métodos de ordenação visto nas aulas gravadas.
Sugestão: Utilize listas.
Linguagem: Python
Respostas
O que são sub-programas?
Sub-programas, sub-rotinas ou simplesmente funções são pedaços de códigos que realizam tarefas específicas em um programa. Elas podem, por exemplo, tanto receber argumentos e retornar valores, como não receber nem retornar nenhum dos dois.
Uma função em Python é estruturada da seguinte maneira:
def nomefuncao(argumentos):
código
return retornofuncao
Qual é a resposta?
Analisando a questão, um dos códigos possíveis (escritos em Python 3.7) é:
def lista_nomes():
""" Lê os nomes completos até uma string vazia """
lista = []
nome = "_"
while nome != "":
nome = input("Digite seu nome: ").strip()
nome_sobrenome = nome.split(" ")
if nome != "":
lista.append(nome_sobrenome)
return lista
def verifica_repetidos(lista):
""" Cria lista dos nomes repetidos maiores que 2 dígitos """
lista_repetidos = []
lista_total = [ns for nome in lista for ns in nome if len(ns) >2]
for i in range(len(lista_total)):
const = lista_total[i]
lista_total[i] = " "
if const in lista_total and const not in lista_repetidos:
lista_repetidos.append(const)
lista_total[i] = const
return lista_repetidos
def ordena_nome(repetidos):
""" Algoritmo bubble sort """
for i in range(len(repetidos)):
for j in range(len(repetidos)-1):
if repetidos[j] > repetidos[j+1]:
const = repetidos[j+1]
repetidos[j+1] = repetidos[j]
repetidos[j] = const
return repetidos
# Programa principal
for nome in ordena_nome(verifica_repetidos(lista_nomes())):
print(nome)
Leia mais sobre funções em Python:
- https://brainly.com.br/tarefa/25157006#readmore