From b10339a78d1592089d31ea0522cf629b8ca27288 Mon Sep 17 00:00:00 2001 From: ferauche Date: Sun, 25 Aug 2024 05:43:27 -0300 Subject: [PATCH 01/13] correcao na definicao dos atributos odometro e motor_on --- src/frota.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/frota.py b/src/frota.py index a4b3891..9db2bdc 100644 --- a/src/frota.py +++ b/src/frota.py @@ -2,8 +2,8 @@ class Carro: modelo : str marca : str cor : str - odometro : 0.0 - motor_on : False + odometro = 0.0 + motor_on = False def __init__(self, modelo : str, marca : str, cor : str, odometro : float, motor : bool): From 4b8df41490a4afdb471b66bd9240794e5c25ea8b Mon Sep 17 00:00:00 2001 From: ferauche Date: Sun, 25 Aug 2024 09:37:04 -0300 Subject: [PATCH 02/13] Merge remote-tracking branch 'origin/main' # Conflicts: # src/frota.py --- {src => exemplo_carro}/frota.py | 27 +++++++++++++++------------ {src => exemplo_carro}/main.py | 2 +- 2 files changed, 16 insertions(+), 13 deletions(-) rename {src => exemplo_carro}/frota.py (59%) rename {src => exemplo_carro}/main.py (96%) diff --git a/src/frota.py b/exemplo_carro/frota.py similarity index 59% rename from src/frota.py rename to exemplo_carro/frota.py index 9db2bdc..a77339a 100644 --- a/src/frota.py +++ b/exemplo_carro/frota.py @@ -2,39 +2,42 @@ class Carro: modelo : str marca : str cor : str - odometro = 0.0 - motor_on = False + __odometro = 0.0 + __motor_on = False def __init__(self, modelo : str, marca : str, cor : str, odometro : float, motor : bool): self.modelo = modelo self.marca = marca self.cor = cor - self.odometro = odometro - self.motor_on = motor + self.__odometro = odometro + self.__motor_on = motor def ligar(self): - if not self.motor_on: - self.motor_on = True + if not self.__motor_on: + self.__motor_on = True else: raise Exception("Erro: Motor já ligado!") def acelerar(self, velocidade : float, tempo : float): - if self.motor_on: - self.odometro += velocidade * tempo + if self.__motor_on: + self.__odometro += velocidade * tempo else: raise Exception("Erro: Não é possível acelerar! Motor desligado!") def desligar(self): - if self.motor_on: - self.motor_on = False + if self.__motor_on: + self.__motor_on = False else: raise Exception("Erro: Motor já desligado!") + def get_odometro(self): + return self.__odometro + def __str__(self): info = (f'Carro {self.modelo}, marca {self.marca}, ' - f'cor {self.cor}\n{self.odometro} Km, ' - f'motor {self.motor_on}') + f'cor {self.cor}\n{self.__odometro} Km, ' + f'motor {self.__motor_on}') return info diff --git a/src/main.py b/exemplo_carro/main.py similarity index 96% rename from src/main.py rename to exemplo_carro/main.py index 49c199e..782dc3a 100644 --- a/src/main.py +++ b/exemplo_carro/main.py @@ -13,7 +13,7 @@ ''' Controlando o carro até ele atingir 10000 Km ''' - while carro1.odometro < 10000: + while carro1.get_odometro() < 10000: try: print('1- Ligar motor') print('2- Desligar motor') From f4c38ca5a2b06bc8420393077e365a11c893884f Mon Sep 17 00:00:00 2001 From: ferauche Date: Sun, 25 Aug 2024 09:37:38 -0300 Subject: [PATCH 03/13] Inicio projeto eleicao --- eleicoes/common.py | 42 +++++++++++++++++++++++ eleicoes/main.py | 83 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 125 insertions(+) create mode 100644 eleicoes/common.py create mode 100644 eleicoes/main.py diff --git a/eleicoes/common.py b/eleicoes/common.py new file mode 100644 index 0000000..14dfadb --- /dev/null +++ b/eleicoes/common.py @@ -0,0 +1,42 @@ +class Pessoa: + __nome : str + __RG : str + __CPF : str + + def __init__(self, nome, RG, CPF): + self.__nome = nome + self.__RG = RG + self.__CPF = CPF + + def __str__(self): + info = (f'Nome: {self.__nome}\n' + f'RG: {self.__RG}\n' + f'CPF: {self.__CPF}\n') + return info + + def __repr__(self): + return f"Pessoa(nome='{self.__nome}', RG='{self.__RG}', CPF='{self.__CPF}')" + +class Eleitor(Pessoa): + __titulo : int + secao : int + zona : int + + def __init__(self, nome, RG, CPF, titulo, secao, zona): + super().__init__(nome, RG, CPF) + self.__titulo = titulo + self.secao = secao + self.zona = zona + + def __str__(self): + info = super().__str__() + info += (f'Titulo: {self.__titulo}\n' + f'Seção: {self.secao}\n' + f'Zona: {self.zona}\n') + return info + + def __repr__(self): + return f"Candidato({super().__repr__()}, titulo='{self.__titulo}', secao='{self.secao}', zona='{self.zona}'" + + def get_titulo(self): + return self.__titulo \ No newline at end of file diff --git a/eleicoes/main.py b/eleicoes/main.py new file mode 100644 index 0000000..9531ff4 --- /dev/null +++ b/eleicoes/main.py @@ -0,0 +1,83 @@ +import pickle +import traceback +from inspect import trace + +from common import * + +FILE_ELEITORES = 'eleitores.pkl' + +def menu_eleitor(): + print("1-Novo Eleitor") + print("2-Atualizar Eleitor") + print("3-Sair") + op = int(input("Digite a opcao [1,2,3]? ")) + while op not in (1, 2, 3): + op = int(input("Digite a opcao [1,2,3]? ")) + return op + +def inserir_eleitor(eleitores): + titulo = int(input("Digite o Títlulo: ")) + + if titulo in eleitores: + raise Exception("Titulo já existente!") + + nome = input("Digite o nome: ") + RG = input("Digite o RG: ") + CPF = input("Digite o CPF: ") + secao = input("Digite a secao: ") + zona = input("Digite a zona: ") + + eleitor = Eleitor(nome, RG, CPF, titulo, secao, zona) + eleitores[eleitor.get_titulo()] = eleitor + + with open(FILE_ELEITORES, 'wb') as arquivo: + pickle.dump(eleitores, arquivo) + + print('Eleitor gravado com sucesso!') + print(eleitor) + +def atualizar_eleitor(eleitores): + titulo = int(input('Digite o titulo do eleitor: ')) + + if titulo in eleitores: + eleitor = eleitores[titulo] + print(eleitor) + secao = input("Digite a nova secao: ") + zona = input("Digite a nova zona: ") + eleitor.secao = secao + eleitor.zona = zona + + with open(FILE_ELEITORES, 'wb') as arquivo: + pickle.dump(eleitores, arquivo) + + print('Atualizados dados do eleitor!') + print(eleitor) + else: + raise Exception('Titulo inexistente') + +if __name__ == "__main__": + eleitores = {} #dicionário a chave será o titulo + try: + print("Carregando arquivo de eleitores ...") + + with open('eleitores.pkl', 'rb') as arquivo: + eleitores = pickle.load(arquivo) + except FileNotFoundError as fnfe: + print(fnfe) + print("Arquivo nao encontrado, nenhum eleitor carregado!") + + opcao = 1 + while opcao in (1,2,3): + try: + opcao = menu_eleitor() + + if opcao == 1: + inserir_eleitor(eleitores) + elif opcao == 2: + atualizar_eleitor(eleitores) + elif opcao == 3: + print("Saindo!") + break + except Exception as e: + #traceback.print_exc() + print(e) \ No newline at end of file From 49cf17c19c40e3c6b7307227e0b3cb2ec6d7597a Mon Sep 17 00:00:00 2001 From: ferauche Date: Sun, 25 Aug 2024 09:39:03 -0300 Subject: [PATCH 04/13] corrigindo imports --- eleicoes/main.py | 1 - 1 file changed, 1 deletion(-) diff --git a/eleicoes/main.py b/eleicoes/main.py index 9531ff4..daee08f 100644 --- a/eleicoes/main.py +++ b/eleicoes/main.py @@ -1,6 +1,5 @@ import pickle import traceback -from inspect import trace from common import * From 3676a9c9944277a9381d21a55daf0d3459438109 Mon Sep 17 00:00:00 2001 From: ferauche Date: Sun, 25 Aug 2024 10:07:48 -0300 Subject: [PATCH 05/13] parametrizando nome do arquivo FILE_ELEITORES --- eleicoes/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eleicoes/main.py b/eleicoes/main.py index daee08f..8dea221 100644 --- a/eleicoes/main.py +++ b/eleicoes/main.py @@ -59,7 +59,7 @@ def atualizar_eleitor(eleitores): try: print("Carregando arquivo de eleitores ...") - with open('eleitores.pkl', 'rb') as arquivo: + with open(FILE_ELEITORES, 'rb') as arquivo: eleitores = pickle.load(arquivo) except FileNotFoundError as fnfe: print(fnfe) From cc7f00a5008da3bc50c069f29f93b99e9043cae5 Mon Sep 17 00:00:00 2001 From: ferauche Date: Mon, 26 Aug 2024 14:31:44 -0300 Subject: [PATCH 06/13] =?UTF-8?q?correcao=20do=20m=C3=A9todo=20=5F=5Frepr?= =?UTF-8?q?=5F=5F=20classe=20Eleitor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eleicoes/common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eleicoes/common.py b/eleicoes/common.py index 14dfadb..65fdc4c 100644 --- a/eleicoes/common.py +++ b/eleicoes/common.py @@ -36,7 +36,7 @@ def __str__(self): return info def __repr__(self): - return f"Candidato({super().__repr__()}, titulo='{self.__titulo}', secao='{self.secao}', zona='{self.zona}'" + return f"Elitor({super().__repr__()}, titulo='{self.__titulo}', secao='{self.secao}', zona='{self.zona}')" def get_titulo(self): return self.__titulo \ No newline at end of file From 96d0ec7b808ff7309aa5e5610c04a50056eb3bad Mon Sep 17 00:00:00 2001 From: ferauche Date: Sun, 1 Sep 2024 18:27:52 -0300 Subject: [PATCH 07/13] =?UTF-8?q?correcao=20do=20m=C3=A9todo=20=5F=5Frepr?= =?UTF-8?q?=5F=5F=20classe=20Eleitor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eleicoes/common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eleicoes/common.py b/eleicoes/common.py index 65fdc4c..54f3a7b 100644 --- a/eleicoes/common.py +++ b/eleicoes/common.py @@ -36,7 +36,7 @@ def __str__(self): return info def __repr__(self): - return f"Elitor({super().__repr__()}, titulo='{self.__titulo}', secao='{self.secao}', zona='{self.zona}')" + return f"Eleitor({super().__repr__()}, titulo='{self.__titulo}', secao='{self.secao}', zona='{self.zona}')" def get_titulo(self): return self.__titulo \ No newline at end of file From ef7f8d282cfbe65cd1ef8fc22f4af793120ee5c9 Mon Sep 17 00:00:00 2001 From: ferauche Date: Sun, 1 Sep 2024 18:33:30 -0300 Subject: [PATCH 08/13] adicionada classe Candidato --- eleicoes/common.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/eleicoes/common.py b/eleicoes/common.py index 54f3a7b..c26dce8 100644 --- a/eleicoes/common.py +++ b/eleicoes/common.py @@ -39,4 +39,22 @@ def __repr__(self): return f"Eleitor({super().__repr__()}, titulo='{self.__titulo}', secao='{self.secao}', zona='{self.zona}')" def get_titulo(self): - return self.__titulo \ No newline at end of file + return self.__titulo + +class Candidato(Pessoa): + __numero : int + + def __init__(self, nome, RG, CPF, numero): + super().__init__(nome, RG, CPF) + self.__numero = numero + + def __str__(self): + info = super().__str__() + info += (f'Numero: {self.__numero}\n') + return info + + def __repr__(self): + return f"Candidato({super().__repr__()}, numero='{self.__numero})'" + + def get_numero(self): + return self.__numero \ No newline at end of file From b1ca686d4736cac32dfd4bdc9180cb9c4c2a289c Mon Sep 17 00:00:00 2001 From: ferauche Date: Sun, 1 Sep 2024 20:19:45 -0300 Subject: [PATCH 09/13] criada classe Candidato --- eleicoes/eleicao.py | 46 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 eleicoes/eleicao.py diff --git a/eleicoes/eleicao.py b/eleicoes/eleicao.py new file mode 100644 index 0000000..090c5b9 --- /dev/null +++ b/eleicoes/eleicao.py @@ -0,0 +1,46 @@ +import pickle +from typing import List +from common import * + +class Urna: + mesario : Pessoa + __secao : int + __zona : int + __eleitores_presentes : List[Pessoa] + __votos = {} #dicionario chave = numero do candidato, valor é a quantidade de votos + + def __init__(self, mesario : Pessoa, secao : int, zona : int, + candidatos : List[Candidato], eleitores : List[Eleitor]): + self.mesario = mesario + self.__secao = secao + self.__zona = zona + self.__candidatos = candidatos + self.__eleitores = [] + for eleitor in eleitores: + if eleitor.zona == zona and eleitor.secao == secao: + self.__eleitores.append(eleitor) + + for candidato in self.__candidatos: + self.__votos[candidato.get_numero()] = 0 + self.__votos['BRANCO'] = 0 + self.__votos['NULO'] = 0 + + with open(f'{self.zona}_{self.secao}.pkl', 'wb') as arquivo: + pickle.dump(self.__votos, arquivo) + + def get_eleitor(self, titulo : int): + for eleitor in self.__eleitores: + if eleitor.get_titulo() == titulo: + return True + return False + + def registrar_voto(self, eleitor : Eleitor, n_cand : int): + self.__eleitores_presentes.append(eleitor) + if n_cand in self.__votos: + self.__votos[n_cand] += 1 + else: + self.__votos['NULO'] += 1 + + + + From ad293f02894c1c89d37989e2807e2addc1d15801 Mon Sep 17 00:00:00 2001 From: ferauche Date: Sun, 1 Sep 2024 21:05:59 -0300 Subject: [PATCH 10/13] classe Urna e gerenciamento da urna --- eleicoes/eleicao.py | 14 ++++++-- eleicoes/gerenciar_urna.py | 30 ++++++++++++++++++ eleicoes/main.py | 65 ++++++++++++++++++++++++++++++++------ 3 files changed, 97 insertions(+), 12 deletions(-) create mode 100644 eleicoes/gerenciar_urna.py diff --git a/eleicoes/eleicao.py b/eleicoes/eleicao.py index 090c5b9..474c14b 100644 --- a/eleicoes/eleicao.py +++ b/eleicoes/eleicao.py @@ -6,7 +6,7 @@ class Urna: mesario : Pessoa __secao : int __zona : int - __eleitores_presentes : List[Pessoa] + __eleitores_presentes : List[Eleitor] __votos = {} #dicionario chave = numero do candidato, valor é a quantidade de votos def __init__(self, mesario : Pessoa, secao : int, zona : int, @@ -14,6 +14,7 @@ def __init__(self, mesario : Pessoa, secao : int, zona : int, self.mesario = mesario self.__secao = secao self.__zona = zona + self.__nome_arquivo = f'{self.zona}_{self.secao}.pkl' self.__candidatos = candidatos self.__eleitores = [] for eleitor in eleitores: @@ -25,13 +26,13 @@ def __init__(self, mesario : Pessoa, secao : int, zona : int, self.__votos['BRANCO'] = 0 self.__votos['NULO'] = 0 - with open(f'{self.zona}_{self.secao}.pkl', 'wb') as arquivo: + with open(self.__nome_arquivo, 'wb') as arquivo: pickle.dump(self.__votos, arquivo) def get_eleitor(self, titulo : int): for eleitor in self.__eleitores: if eleitor.get_titulo() == titulo: - return True + return eleitor return False def registrar_voto(self, eleitor : Eleitor, n_cand : int): @@ -41,6 +42,13 @@ def registrar_voto(self, eleitor : Eleitor, n_cand : int): else: self.__votos['NULO'] += 1 + with open(self.__nome_arquivo, 'wb') as arquivo: + pickle.dump(self.__votos, arquivo) + + def __str__(self): + info = (f'Urna da seção {self.__secao}, zona {self.__zona}\n' + f'Mesario {self.mesario}\n') + diff --git a/eleicoes/gerenciar_urna.py b/eleicoes/gerenciar_urna.py new file mode 100644 index 0000000..9bee094 --- /dev/null +++ b/eleicoes/gerenciar_urna.py @@ -0,0 +1,30 @@ +from common import * +from eleicao import Urna + +def iniciar_urna(eleitores, candidatos): + print("Iniciando Urna") + print("==============") + secao = int(input("Número da secao: ")) + zona = int(input("Número da zona: ")) + + nome_mes = input("Nome do Mesario: ") + rg_mes = input("RG do Mesario: ") + cpf_mes = input("CPF do Mesario: ") + + mesario = Pessoa(nome_mes, rg_mes, cpf_mes) + + return Urna(mesario, secao, zona, candidatos, eleitores) + +def votar(urna : Urna): + titulo_eleitor = int(input("Digite o titulo do eleitor: ")) + eleitor = urna.get_eleitor(titulo_eleitor) + + if not eleitor: + raise Exception("Eleitor não é desta Urna") + + print(eleitor) + print("Pode votar!") + print("===========") + voto = int(input("Digite o numero do candidato: ")) + urna.registrar_voto(eleitor, voto) + diff --git a/eleicoes/main.py b/eleicoes/main.py index 8dea221..0a9d912 100644 --- a/eleicoes/main.py +++ b/eleicoes/main.py @@ -1,17 +1,22 @@ import pickle import traceback - +import gerenciar_urna from common import * FILE_ELEITORES = 'eleitores.pkl' +FILE_CANDIDATOS = 'candidatos.pkl' -def menu_eleitor(): +def menu(): print("1-Novo Eleitor") print("2-Atualizar Eleitor") - print("3-Sair") - op = int(input("Digite a opcao [1,2,3]? ")) - while op not in (1, 2, 3): - op = int(input("Digite a opcao [1,2,3]? ")) + print("3-Inserir Candidato") + print("4-Listar Candidatos") + print("5-Iniciar Urna") + print("6-Testar Urna") + print("7-Sair") + op = int(input("Digite a opcao [1 a 7]? ")) + while op not in range(1, 8): + op = int(input("Digite a opcao [1 a 7]? ")) return op def inserir_eleitor(eleitores): @@ -54,6 +59,29 @@ def atualizar_eleitor(eleitores): else: raise Exception('Titulo inexistente') +def inserir_candidato(candidatos): + numero = int(input("Digite o número do candidato: ")) + + if numero in candidatos: + raise Exception("Candidato já existente!") + + nome = input("Digite o nome: ") + RG = input("Digite o RG: ") + CPF = input("Digite o CPF: ") + + candidato = Candidato(nome, RG, CPF, numero) + candidatos[candidato.get_numero()] = candidato + + with open(FILE_CANDIDATOS, 'wb') as arquivo: + pickle.dump(candidatos, arquivo) + + print('Candidato gravado com sucesso!') + print(candidato) + +def listar_candidatos(candidatos): + for candidato in candidatos.values(): + print(candidato) + if __name__ == "__main__": eleitores = {} #dicionário a chave será o titulo try: @@ -65,18 +93,37 @@ def atualizar_eleitor(eleitores): print(fnfe) print("Arquivo nao encontrado, nenhum eleitor carregado!") + candidatos = {} # dicionário a chave será o titulo + try: + print("Carregando arquivo de candidatos ...") + + with open(FILE_CANDIDATOS, 'rb') as arquivo: + candidatos = pickle.load(arquivo) + except FileNotFoundError as fnfe: + print(fnfe) + print("Arquivo nao encontrado, nenhum candidato carregado!") + opcao = 1 - while opcao in (1,2,3): + while opcao in range(1,8): try: - opcao = menu_eleitor() + opcao = menu() if opcao == 1: inserir_eleitor(eleitores) elif opcao == 2: atualizar_eleitor(eleitores) elif opcao == 3: + inserir_candidato(candidatos) + elif opcao == 4: + listar_candidatos(candidatos) + elif opcao == 5: + urna = gerenciar_urna.iniciar_urna(candidatos, eleitores) + elif opcao == 6: + gerenciar_urna.votar(urna) + elif opcao == 7: print("Saindo!") break except Exception as e: #traceback.print_exc() - print(e) \ No newline at end of file + print(e) + From 80abf5d3b187bf1eb2ba1619018171c79a8dc2a8 Mon Sep 17 00:00:00 2001 From: ferauche Date: Mon, 2 Sep 2024 14:00:56 -0300 Subject: [PATCH 11/13] correceos atributo --- eleicoes/eleicao.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eleicoes/eleicao.py b/eleicoes/eleicao.py index 474c14b..48143e6 100644 --- a/eleicoes/eleicao.py +++ b/eleicoes/eleicao.py @@ -6,7 +6,7 @@ class Urna: mesario : Pessoa __secao : int __zona : int - __eleitores_presentes : List[Eleitor] + __eleitores_presentes : List[Eleitor] = [] __votos = {} #dicionario chave = numero do candidato, valor é a quantidade de votos def __init__(self, mesario : Pessoa, secao : int, zona : int, @@ -14,7 +14,7 @@ def __init__(self, mesario : Pessoa, secao : int, zona : int, self.mesario = mesario self.__secao = secao self.__zona = zona - self.__nome_arquivo = f'{self.zona}_{self.secao}.pkl' + self.__nome_arquivo = f'{self.__zona}_{self.__secao}.pkl' self.__candidatos = candidatos self.__eleitores = [] for eleitor in eleitores: From 12e3625426d9c5a557ac13ab342282a2c5588d22 Mon Sep 17 00:00:00 2001 From: ferauche Date: Mon, 2 Sep 2024 14:01:13 -0300 Subject: [PATCH 12/13] correcao entrada tipo int para secao e zona --- eleicoes/main.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/eleicoes/main.py b/eleicoes/main.py index 0a9d912..34457bb 100644 --- a/eleicoes/main.py +++ b/eleicoes/main.py @@ -28,8 +28,8 @@ def inserir_eleitor(eleitores): nome = input("Digite o nome: ") RG = input("Digite o RG: ") CPF = input("Digite o CPF: ") - secao = input("Digite a secao: ") - zona = input("Digite a zona: ") + secao = int(input("Digite a secao: ")) + zona = int(input("Digite a zona: ")) eleitor = Eleitor(nome, RG, CPF, titulo, secao, zona) eleitores[eleitor.get_titulo()] = eleitor @@ -46,8 +46,8 @@ def atualizar_eleitor(eleitores): if titulo in eleitores: eleitor = eleitores[titulo] print(eleitor) - secao = input("Digite a nova secao: ") - zona = input("Digite a nova zona: ") + secao = int(input("Digite a nova secao: ")) + zona = int(input("Digite a nova zona: ")) eleitor.secao = secao eleitor.zona = zona From 1bfb2af8b15135f07a365d267e70cd57fe0e999b Mon Sep 17 00:00:00 2001 From: ferauche Date: Mon, 2 Sep 2024 14:03:43 -0300 Subject: [PATCH 13/13] correcao passagam e deparamentros gerenciar_urna --- eleicoes/main.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eleicoes/main.py b/eleicoes/main.py index 34457bb..ada9874 100644 --- a/eleicoes/main.py +++ b/eleicoes/main.py @@ -117,7 +117,8 @@ def listar_candidatos(candidatos): elif opcao == 4: listar_candidatos(candidatos) elif opcao == 5: - urna = gerenciar_urna.iniciar_urna(candidatos, eleitores) + urna = gerenciar_urna.iniciar_urna(eleitores.values(), + candidatos.values()) elif opcao == 6: gerenciar_urna.votar(urna) elif opcao == 7: