How to add new keys to a dictionary?

Asked

Viewed 1,237 times

0

Next, I’m doing a program that’s an academic control system, it turns out that when it comes to adding teachers, for example, it’s not creating new keys for teachers in the dictionary. He’s simply replacing them Here functions to add and query:

def addProfessor(cpf, nome, departamento):
global dicProfessores
dicProfessores = {}
if cpf not in dicProfessores:
    dicProfessor = {"Nome":nome, "Cpf":cpf, "Departamento":departamento}
    dicProfessores[cpf] = dicProfessor
    print("Professor cadastrado com sucesso.")
else:
    print("Erro de cadastro.\nEste professor já está cadastrado no sistema.")


def consultarProfessor(cpf):
if cpf in dicProfessores:
        dicProfessor = dicProfessores[cpf]          #definindo uma variavel para a chave do dicionario de professores
        for chave,elem in dicProfessor.items():
            print(chave + ": " + str(elem))
else:
    print("Este professor não é funcionário desta faculdade.")

and here the code to test(still incomplete):

 print(">>>>>>>>>>>>>BEM VINDO AO SISTEMA DE CONTROLE ACADÊMICO<<<<<<<<<<<<<<<")
print("")
print("")
print("Selecione onde você deseja fazer modificações: \n ")
print("1 - Professores\n2 - Alunos\n3 - Disciplinas\n4 - Turmas\n5 - Sair")
escolha = input("Digite o número corresponda a uma das opções: ")
if escolha == "5":
    print("Fim do programa.")
    break
else:
    while True:
        if escolha == "1":
            print("O que você deseja fazer?\n ")
            print("1 - Adicionar professor\n2 - Consultar professor")
            print("3 - Atualizar professor\n4 - Deletar professor\n5 - Voltar\n")
            escolhaP = input("Digite o número corresponda a uma das opções: ")
            if escolhaP == "5":
                break
            else:
                while True:
                    if escolhaP == "1":
                        print("\nDigite 'cancelar' para voltar.")
                        cpfP = input("Digite o cpf do professor: ")
                        if cpfP == "cancelar": break
                        nomeP = input("Digite o nome do professor: ")
                        if nomeP == "cancelar": break
                        departamentoP = input("Digite o departamento do professor: ")
                        if departamentoP == "cancelar": break
                        else:
                            addProfessor(cpfP, nomeP, departamentoP)
                    elif escolhaP == "2":
                        print("\nDigite 'cancelar' para voltar.")
                        cpfP = input("Digite o cpf do professor: ")
                        if cpfP == "cancelar".lower(): break
                        else:
                            consultarProfessor(cpfP)
  • You put the dictionary dicProfessores as a global variable within the function addProfessor, I believe the problem is there. Global variables should be created in the most external layer of the application (but it is best to avoid them to the maximum). My suggestion is to create a class-collection of teachers. In it you would put the functions of searching for teacher and add when there is no.

  • Yes, I would love to use class, but my teacher doesn’t want us to use class in this project, but I will try to put dictionaries inside the interface and take them out of the function module

  • Ae, now it’s gone, just take out the dictionary as a global variable and put it in function

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.