1
resposta

Programa para gerenciar uma agenda de contatos: melhor usar uma lista de dicionários?

Elabore um programa que permita ao usuário gerenciar uma pequena lista de contatos prioritários (capacidade máxima de 20 contatos). Cada contato deve possuir nome usual (o primeiro nome ou apelido da pessoa), o nome completo, telefone fixo e telefone celular. Construa um pequeno menu de opções,permitindo a leitura da opção desejada até o usuário escolher 0, para sair. O menu terá, portanto, as seguintes opções:

  1. sair
  2. incluir um novo contato (adicione o novo contato na primeira posição livre do vetor de registros, cuidando com o limite de 20 contatos)
  3. consultar um contato a partir do nome usual (ler o nome usual, procurar pelo contato, em encontrando, mostrar as informações detalhadas dos campos, se não encontrar, mostrar mensagem de contato inexistente)
  4. exibir a listagem de todos os contatos em ordem alfabética de nome usual (ou seja, antes de imprimir os contatos existente na lista, ordene o vetor em ordem alfabética ascendente de nome usual).

Eu pensei em usar uma lista de dicionários para gerenciar a Agenda. Seria a melhor opção? Acredito que a opcao de máximo de contatos (20 contatos) não tenha como gerenciar com Python.

def buscaApelido(Agenda):
    apelido = input("Digite o apelido a procurar: ")
    for ele in Agenda:
        if ele["apelido"] == apelido:
            #print(f"nome completo = {ele['nome_completo']}")
            #print(f"Telefone fixo = {ele['fixo']}")
            #print(f"Telefone celular = {ele['celular']}")
            return ele
agenda = []
contato = {}

while True:
    opcao = int(input(f"Digite 0 para inserir um novo contato: ") )  
    match opcao:

        case 0:
            contato = {}#sem isso, vai ficar tudo repetido...
            apelido = input("Digite o apelido: ")
            contato["apelido"] = apelido
            nome_completo = input("Digite o nome completo: ")
            contato["nome_completo"] = nome_completo
            fixo = input(" Digite o telefone fixo: ")
            contato["fixo"] = fixo
            celular = input("Digite o telefone celular: ")
            contato["celular"] = celular
            agenda.append(contato)
        case 2:#consultar um contato a partir do nome usual
            buscaApelido(agenda)
            if  buscaApelido(agenda):
                 print("Contato Inexistente")
            break


        case 3:#exibir a listagem de todos os contatos em ordem alfabética
            pass
        case 4:#sair
            break

agenda        

Problema: A busca por contato não funciona corretamente, por exemplo, caso o contato seja inexistente. O item 3 não consegui fazer. Alguma ideia?

1 resposta

Sim. Várias. Tem muitas formas de desenvolver esse mini projeto.