1
resposta

[Dúvida] Preciso de ajuda em uma questão de Lista com Python

A aplicação deve possibilitar o cidadão em votar no seu candidato passando as seguintes informações: primeiro nome, sexo, zona, seção e o número do candidato (22 ou 13). Todas estas informações devem ser guardadas em uma estrutura de dados simples (lista ou tupla). A seguir estão listadas as funcionalidades que deverão ser modularizadas (descritas em funções):

• Qual candidato venceu?

• Qual a zona e seção mais votada?

• Qual o sexo que mais compareceu nas eleições?

-> O relatório final deve ser escrito em um arquivo .txt.

-> Obs: é importante ler, no mínimo, 10 eleitores como entrada de dados.

Diante disso, como vamos ajudar o TSE no cumprimento desta solução através do conceito de modularização, estrutura de dados usando lista e arquivos?

1 resposta

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!