Meus Contatos
por Adriano Santos @getholdof
- 64
- 0
- 0
Resumo do Projeto de Meus Contatos
Este projeto, desenvolvido no âmbito do curso Introdução à programação em Python, tem a ambição de criar um sistema simples que permita o gerenciamento eficiente de uma lista de contatos. Através de menus interativos, o usuário pode facilmente:
- [*] Procurar Contato: por nome, apelido, telefone ou email.
- [*]Ver Contatos: a lista completa de contatos ou os resultados da última busca.
- [*]Adicionar Contato: novos contatos à lista, com validação de dados para garantir a qualidade das informações.
- [*]Remover Contatosr: contatos da lista, buscando por nome, apelido, telefone ou mail.








import os
os.system('cls')
print('+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+')
print('| |M|E|U|S| |C|O|N|T|A|T|O|S| |')
print('+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+')
#Lista de contatos inicial
contatos = [
{"nome": "Augusto",
"apelido": "Santos",
"telefone": "987654321",
"email": "adivinha@gmail.com"},
{"nome": "Luís",
"apelido": "Andrade",
"telefone": "963214785",
"email": "landrade@gmail.com"},
{"nome": "Pedro",
"apelido": "Ferreira",
"telefone": "987412365",
"email": "pedferreira@ivol.com"},
{"nome": 'Maria Joana',
'apelido': 'Marley',
'telefone': '918253467',
'email':'majmarley@gmail.com'}
]
#lista de resultados de contatos
resultados = []
#função de pricura de resultados de contatos
def procurar_contato():
while True:
print('1: Nome | 2: Apelido | 3: Telefone | 4: Email | X: Sair da procura')
chave = (input("Qual chave deseja usar para a pesquisa? ")).lower()
#print()
if chave == 'x': # sair da procura
print()
print("Saindo da Procura")
break
if chave not in ['1', '2', '3', '4','x']: # verifica se chave corresponde ao set de caraters admitido
print()
print("Opção inválida. Tente novamente.")
continue
if chave == "1":# if 1 => nome
chave = 'nome'
elif chave == "2":# if 2 => apelido
chave = 'apelido'
elif chave == "3":#se 3 => telefone
chave = 'telefone'
elif chave == "4":#se 4 => email
chave = 'email'
valor = input(f"Digite o que procurar em {chave}: ")# pede o que pesquisar em chave
resultados = [contato for contato in contatos if contato[chave] == valor]# lista de contacos match valor na chave
ultimo_resultado = resultados.copy() # copy para usar em Remover contacto
visualizar_contatos(resultados, valor)# visualizar o resultado da procura (apaga a Lista de Resultados)
return ultimo_resultado
def visualizar_contatos(resultados, valor = None):
while True:
if resultados:# se reultados tiver info
if len(resultados) < len(contatos):# se resultados menor que todos os contatos
if valor is not None:# verifica se o valor nao está vazio
print()
print(f"Encontrados {len(resultados)} resultado(s) para {valor}:")#imprime quantos resultados encontou em valor
else:# se valor está vazio, vem de adicionar contato
print()
print('Contato adicionado correctamente')#avisa que o contato foi adicionado correctamente
else:#se os resultados = todos os contatos
resultados = contatos.copy()# resultados copia de contatos para futuro cleaning
print(f"Tem {len(contatos)} contato(s) na sua lista.")# num total contatos na lista de contatos
#imprir contacto e indexar na lista
for index, contato in enumerate(resultados): #devolve index de contato em resultados
print('--------------------------------------------------------------------')
if not contato:# se resultados sem contato
print()
print(f"Nenhum contato encontrado com {chave} = {valor}.")# nao encontrado
else: # se contatos em resultados
print(f"{index+1}. {contato['nome']} {contato['apelido']}") #imprime index de contato nome e apelido
for chave, valor in contato.items():# o par chave valor do dict do contato
if chave == 'nome' or chave == 'apelido':# evita mostrar nome e apelido ja mostrado
continue
else:
print(f" {chave}: {valor}")# mostra cada par chave valor do contato
resultados.clear() # apaga lista de resultados para reutilizar
break
else:# se reulstados vazio
print()
print(f'Nenhum contato encotratdo para {valor}.')# nao contato em valor
break
def adicionar_contato():
novo_contato = {}# cria dict novo_contato
novo_contato["nome"] = input("Digite o nome do contato: ")#input nome do contato
novo_contato["apelido"] = input("Digite o apelido do contato (opcional): ")#input apelido do contato
while True:
try:# experimenta a condição para adicionar um numero
novo_contato["telefone"] = input("Digite o telefone do contato: ")#input telefone do contato
int(novo_contato["telefone"])#transforma varSTR do input em varINT - se input for tudo digito sai do loop
break#sai do loop
except ValueError:# se nao for digitos e devolve Erro
print("O número de telefone deve conter apenas dígitos. Tente novamente.")# volta ao inicio do Loop até serem so digitos
novo_contato["email"] = input("Digite o email do contato: ")#input email do contato
contatos.append(novo_contato)#adiciona contato criado a lista de contatos
resultados.append(novo_contato)#cria resulatados de apena contato adicionado para usar em vizualizat
visualizar_contatos(resultados)#visualizar contato adicionado
def remover_contato():
if contatos:# se existem conatos na lista de contatos
ultimo_resultado = procurar_contato()#pegar na ultima pesquisa
while True:
if not ultimo_resultado:# se ultimo resultado vazio
break #quebr
else:# se ultimo resultado
try:#verifica se indice_remover é digito
indice_remover = int(input("Digite o número do contato a ser removido: ")) - 1# subtrai 1 para corresponder ao index do contato em contatos
if 0 <= indice_remover < len(ultimo_resultado):#indice_remover ten de ser menor que ultimo resultado
for index, contato in enumerate(contatos):#verificar os contatos em ultimo resultado
if contato == ultimo_resultado[indice_remover]:#encontrar em ultimo resultado o contato
del contatos[index]# remover contato de contatos
ultimo_resultado.clear() #limpar ultimo contacto
break
print()
print("Contato removido com sucesso!")#confirma contato removido
break
else:
print("Índice inválido. Tente novamente.")#erro de indice inválido
except ValueError:
print("O índice deve ser um número inteiro. Tente novamente.")#erro indice deve ser um digito
else:
print("Sua lista de contatos está vazia!")# Aviso a lista está vasia
while True:
print()
print()
print('Menu principal'.upper() )#MENU PRINCIPAL
print('--------------------------------------------------------------------')
print("1: Procurar | 2: Ver contatos | 3: Adicionar | 4: Remover | X: Sair ")
opcao = input("Digite sua opção: ")
#verificaar opção
if opcao == "1":#Procurar Contato
print()
print('Procurar Contato'.upper())
print('--------------------------------------------------------------------')
procurar_contato()
elif opcao == "2":#Ver Contato
print()
print('Ver Contatos'.upper())
print('--------------------------------------------------------------------')
visualizar_contatos(contatos)
elif opcao == "3":#Adicionar Contato
print()
print("Adicionar Contato".upper())
print('--------------------------------------------------------------------')
adicionar_contato()
elif opcao == "4":#Remover Contato
print()
print('Remover Contato'.upper())
print('--------------------------------------------------------------------')
remover_contato()
elif opcao == "X" or opcao.lower() == "x":#Sair do Meus Contatos
print()
print("A sair de app Meus Contatos..
Até breve!".upper())
print('--------------------------------------------------------------------')
break
else:
print()
print("Opção inválida. Tente novamente.")
0 comentarios
Entra o únete Gratis para comentar