Olá Wanger, tudo bem com você?
Peço desculpas pela demora no retorno.
Para o este problema proposto, podemos utilizar uma lista para armazenar as informações dos eleitores, onde, cada elemento da lista será uma tupla contendo as informações do eleitor. E a partir dessas informações, usá-las em funções que responsáveis por verificar qual o candidato venceu, ou identifica a zona e seção mais votada, ou, o gênero que mais compareceu e por fim, uma função que gera um relatório final. Essa implementação é apresentada abaixo:
def vencedor(eleitores):
votos_22 = 0
votos_13 = 0
for eleitor in eleitores:
if eleitor[4] == "22":
votos_22 += 1
elif eleitor[4] == "13":
votos_13 += 1
if votos_22 > votos_13:
return f"Candidato 22 venceu com {votos_22} votos"
elif votos_13 > votos_22:
return f"Candidato 13 venceu com {votos_13} votos"
else:
return "Empate"
def zona_secao_mais_votadas(eleitores):
votos_por_zona_secao = {}
for eleitor in eleitores:
zona_secao = f"{eleitor[2]}-{eleitor[3]}"
if zona_secao in votos_por_zona_secao:
votos_por_zona_secao[zona_secao] += 1
else:
votos_por_zona_secao[zona_secao] = 1
mais_votada = max(votos_por_zona_secao, key=votos_por_zona_secao.get)
return f"Zona e seção mais votadas: {mais_votada}, com {votos_por_zona_secao[mais_votada]} votos"
def sexo_mais_compareceu(eleitores):
votos_por_sexo = {"M": 0, "F": 0}
for eleitor in eleitores:
votos_por_sexo[eleitor[1]] += 1
mais_compareceu = max(votos_por_sexo, key=votos_por_sexo.get)
return f"Sexo que mais compareceu nas eleições: {mais_compareceu}, com {votos_por_sexo[mais_compareceu]} votos"
def gerar_relatorio(eleitores):
with open("relatorio.txt", "w", encoding='utf-8') as arquivo:
arquivo.write(vencedor(eleitores) + "\n")
arquivo.write(zona_secao_mais_votadas(eleitores) + "\n")
arquivo.write(sexo_mais_compareceu(eleitores) + "\n")
eleitores = [
('Maria', 'F', '123', '456', '22'),
('João', 'M', '123', '456', '13'),
('Ana', 'F', '456', '789', '22'),
('Pedro', 'M', '456', '789', '22'),
('José', 'F', '789', '123', '13'),
('Mariana', 'F', '789', '123', '13'),
('Lucas', 'M', '123', '456', '22'),
('Beatriz', 'F', '456', '789', '13'),
('Fernando', 'M', '123', '456', '22'),
('Juliana', 'F', '789', '123', '13')
]
gerar_relatorio(eleitores)
Resultado presente no arquivo relatorio.txt
Empate
Zona e seção mais votadas: 123-456, com 4 votos
Sexo que mais compareceu nas eleições: F, com 6 votos
Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.
Espero ter lhe ajudado. Em caso de dúvidas estou à disposição.
Abraços e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!