Pessoal, para quem interessar e quiser testar a capacidade de processamento de dados maiores.
Na questão 09, na eleição com 20 funcionários e 04 candidatos, criei uma função que faz o processamento da eleição, gerando votos aleatórios entre as 06 opções possíveis.
A chamada da função recebe o argumento "Número de funcionários", atraves do quant_funcionários. Daí da pra fazer até com milhões de funcionários, e testar quanto tempo a máquina que você está conectada demora para processar todos os votos e gerar o resultado.
Segue função:
def eleicao(quant_funcionarios):
#importa a função Random
import random
#Criamos uma função que retorna uma lista com o tamanho da quantidade de funcionários, com os votos entre 1-6 escolhidos de maneira aleatória.
def votos_aleatorios(quant_funcionarios, inicio, fim):
lista_aleatoria = []
for _ in range(quant_funcionarios):
lista_aleatoria.append(random.randint(inicio, fim))
return lista_aleatoria
votos = votos_aleatorios(quant_funcionarios,1,6)
#Declarações iniciais de votos
candidato1=0
candidato2=0
candidato3=0
candidato4=0
nulos=0
brancos=0
aux=0
#Capta voto por voto na lista e atribui ao candidato
while(aux < quant_funcionarios):
voto=votos[aux]
if voto == 1:
candidato1+=1
elif voto == 2:
candidato2+=1
elif voto == 3:
candidato3+=1
elif voto == 4:
candidato4+=1
elif voto == 5:
nulos+=1
elif voto == 6:
brancos+=1
else:
#Calcula a porcentagem de votos nulos e brancos
por_nulos = nulos/quant_funcionarios*100
por_brancos = brancos/quant_funcionarios*100
#Impressões dos resultados
print(f'RESULTADO DA VOTAÇÃO:\nCandidato 1: {candidato1} votos. \nCandidato 2: {candidato2} votos. \nCandidato 3: {candidato3} votos. \nCandidato 4: {candidato4} votos. ')
print(f'Votos nulos: {nulos}. \nVotos brancos: {brancos} votos')
print(f'Total de votos: {quant_funcionarios}')
print(f'Porcentagem de votos nulos: {por_nulos:.2f}%')
print(f'Porcentagem de votos brancos: {por_brancos:.2f}%')
#Coloca o resultado em uma lista
resultado = [candidato1, candidato2, candidato3, candidato4]
#Descobre qual a maior quantidade de votos
mais_votos=max(resultado)
#Coloca em uma lista os candidatos que tiveram mais votos
candidato_vencedor=[]
for i in range(1,len(resultado)+1):
if mais_votos == resultado[i-1]:
candidato_vencedor.append(i)
#Imprime o vencedor ou vencedores em caso de empate
if len(candidato_vencedor)>1:
print('Eleição teve empate. Candidatos vencedores:')
for i in range (len(candidato_vencedor)):
print(f'{candidato_vencedor[i]} ')
else:
print(f'Eleição não teve empate. O vencedor da eleição foi o candidato: {candidato_vencedor[0]}')
Nosso código também trata o caso que acontece muito com menores quantidades de funcionários, que é o caso do empate.
Podemos chamar a função, por exemplo, com 1 milhão de funcionários, através de
eleicao(1000000)
Aqui demorou menos de 10s para processar.