Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 UNIVERSIDADE ESTÁCIO DE SÁ PÓS-GRADUAÇÃO EM CIÊNCIA DE DADOS E BIG DATA ANALYTICS TRABALHO PYTHON MAIKSON RODRIGO DE LIMA NOBRE Trabalho da disciplina Linguagem Python Tutor: Prof. André Luiz Braga Macapá - AP 2021 http://portal.estacio.br/ 2 1. Trabalho a ser desenvolvido: Faça um programa que permita ao usuário a manipulação de um arquivo binário para criação de um pequeno controle de votos de uma eleição, utilizando os seguintes campos: cod_candidato, nome, cargo, regiao, num_votos. Em seguida, o usuário deverá ser capaz de inserir no arquivo os dados de cada candidato e depois listar todos os candidatos, votos por candidatos, total por candidato e por região. 2. Desenvolvimento # coding=utf-8 """ALUNO MAIKSON RODRIGO DE LIMA NOBRE, MATRICULA 202010095674 FAÇA UM PROGRAMA QUE PERMITA AO USUÁRIO A MANIPULAÇÃO DE UM ARQUIVO BINÁRIO PARA CRIAÇÃO DE UM PEQUENO CONTROLE DE VOTOS DE UMA ELEIÇÃO, UTILIZANDO OS SEGUINTES CAMPOS: COD_CANDIDATO, NOME, CARGO, REGIAO, NUM_VOTOS. EM SEGUIDA, O USUÁRIO DEVERÁ SER CAPAZ DE INSERIR NO ARQUIVO OS DADOS de CADA CANDIDATO e DEPOIS LISTAR TODOS CADIDATOS, VOTOS POR CANDIDATOS, TOTAL POR CANDIDATO e POR REGIAO. """ import cPickle import os def valida_arquivo(): try: pickle_file = open("arquivo.dat", "rb") except: print "ARQUIVO NÃO ENCONTRADO \n" raw_input("PARA CRIAR UM NOVO ARQUIVO PRESSIONE <ENTER>\n") cria_arquivo() def valida(cod): # VALIDA SE JA EXISTE UM CANDIDATO CADASTRADO COM O MESMO CODIGO duplicado = False pickle_file = open("arquivo.dat", "rb") base = cPickle.load(pickle_file) pickle_file.close() if cod in base.keys(): duplicado = True return duplicado def contador(): # CONTAGEM DE CANDIDATOS CADASTRADOS pickle_file = open("arquivo.dat", "rb") base = cPickle.load(pickle_file) print('EXISTEM ' + str(len(base)) + ' CANDIDATOS REGISTRADOS ATUALMENTE\n') 3 pickle_file.close() def listar_todos(): pickle_file = open("arquivo.dat", "rb") base = cPickle.load(pickle_file) if len(base) > 0: for cod in base.keys(): print 'CODIGO: ' + base[cod]['cod_candidato'] print 'NOME: ' + base[cod]['nome'] print 'CARGO: ' + base[cod]['cargo'] print 'REGIAO: ' + base[cod]['regiao'] print 'TOTAL DE VOTOS: ' + str(base[cod]['num_votos']) print('\n' + '#' * 25 + '\n') raw_input('PRESSIONE <ENTER> PARA VOLTAR AO MENU \n') pickle_file.close() menu() def votos_candidato(): pickle_file = open("arquivo.dat", "rb") base = cPickle.load(pickle_file) if len(base) > 0: for cod in base.keys(): print 'NOME: ' + base[cod]['nome'] print 'TOTAL DE VOTOS: ' + str(base[cod]['num_votos']) print '\n' + '#' * 25 + '\n' raw_input('PRESSIONE <ENTER> PARA VOLTAR AO MENU \n') pickle_file.close() menu() def votos_regiao(): pickle_file = open("arquivo.dat", "rb") base = cPickle.load(pickle_file) regioes = dict() for candidato in base.values(): regioes[candidato['regiao']] = regioes.get(candidato['regiao'], 0) + candidato['num_votos'] print('TOTAL DE VOTOS POR REGIAO: ' + str(regioes)) raw_input('PRESSIONE <ENTER> PARA VOLTAR AO MENU \n') pickle_file.close() menu() def cria_arquivo(): base = {} pickle_file = open("arquivo.dat", "wb") cPickle.dump(base, pickle_file) print "O ARQUIVO FOI CRIADO COM SUCESSO \n" pickle_file.close() menu() def busca(): # PESQUISA DE CANDIDATO POR COD 4 pickle_file = open("arquivo.dat", "rb") base = cPickle.load(pickle_file) cod = raw_input('INFORME O CÓDIGO DO CANDIDATO: \n') if valida(cod): print '#' * 25 print 'CODIGO: ' + base[cod]['cod_candidato'] print 'NOME: ' + base[cod]['nome'] print 'CARGO: ' + base[cod]['cargo'] print 'REGIAO: ' + base[cod]['regiao'] print 'TOTAL DE VOTOS: {0}'.format(str(base[cod]['num_votos'])) print '#' * 25 + '\n' raw_input('PRESSIONE <ENTER> PARA VOLTAR AO MENU \n') else: print('CANDIDATO NÃO ENCONTRADO, TENTE NOVAMENTE \n') raw_input('PRESSIONE <ENTER> PARA VOLTAR AO MENU \n') pickle_file.close() menu() def add_candidato(): # ADICIONA UM NOVO CANDIDATO pickle_file = open("arquivo.dat", "rb") base = cPickle.load(pickle_file) candidato = {} cod = raw_input('INFORME O CÓDIGO DO CANDIDATO: \n') candidato['cod_candidato'] = cod candidato['nome'] = raw_input('INFORME O NOME DO CANDIDATO: \n') candidato['cargo'] = raw_input('INFORME O CARGO DO CANDIDATO: \n') candidato['regiao'] = raw_input('INFORME A REGIÃO DO CANDIDATO: \n') candidato['num_votos'] = int(raw_input('INFORME A QUANTIDADE DE VOTOS DO CANDIDATO: \n')) base[cod] = candidato pickle_file.close() pickle_file = open("arquivo.dat", "wb") cPickle.dump(base, pickle_file) print "NOVO CANDIDATO INSERIDO AO REGISTRO \n" pickle_file.close() menu() def menu(): # MENU INICIAL DO PROGRAMA os.system('cls') print \ """ ############### CONTROLE DE VOTOS / ELEICÃO 2021 ############ ## ## ## (1) SAIR DO PROGRAMA ## ## (2) CRIAR ARQUIVO BASE ## ## (3) ADICIONAR UM NOVO CANDIDATO ## ## (4) PESQUISAR UM CANDIDATO ## ## (5) LISTAR VOTOS POR CANDIDATO ## ## (6) LISTAR TODOS OS CANDIDATOS ## 5 ## (7) LISTAR VOTOS POR REGIÃO ## ## ## ############################################################# """ contador() def main(): valida_arquivo() choice = None menu() while choice != 1: choice = raw_input("\nESCOLHA UMA OPÇÃO: \n") if choice == "1": print "PROGRAMA FINALIZADO" break elif choice == "2": cria_arquivo() elif choice == "3": add_candidato() elif choice == "4": busca() elif choice == "5": votos_candidato() elif choice == "6": listar_todos() elif choice == "7": votos_regiao() else: print "\nDESCULPE, MAS %s NÃO É UMA OPÇÃO VALIDA." % choice main() raw_input("PRESSIONE <ENTER> PARA SAIR.") 6 3. Resultado. O programa solicitado teve como resultado as seguintes telas. 3.1 – Menu inicial do programa: 3.2 – Criação do arquivo binário para manipulação dos dados inseridos pelo usuário: 7 3.3 – Adicionar um novo candidato: 8 3.4 – Listar votos por candidato: 9 3.5 – Listar todos os candidatos: 10 3.6 Listar votos por região:
Compartilhar