Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

2º Parte Python-data-science-primeiros-passos - Estruturas de repetição

Inicializa os contadores de votos

votos = {
    1: 0,  # Candidato(a) 1
    2: 0,  # Candidato(a) 2
    3: 0,  # Candidato(a) 3
    4: 0,  # Candidato(a) 4
    5: 0,  # Voto nulo
    6: 0   # Voto em branco
}

Coleta os votos dos 20 colaboradores

for i in range(1, 21):
    while True:
        try:
            voto = int(input(f'Colaborador(a) {i}, digite seu voto (1 a 6): '))
            if 1 <= voto <= 6:
                votos[voto] += 1
                break
            else:
                print('Voto inválido. Digite um número entre 1 e 6.')
        except ValueError:
            print('Entrada inválida. Digite um número inteiro.')

Exibe a contagem de votos

print('\nResultado da eleição:')
for candidato in range(1, 5):
    print(f'Candidato(a) {candidato}: {votos[candidato]} voto(s)')
print(f'Votos nulos: {votos[5]}')
print(f'Votos em branco: {votos[6]}')

Calcula porcentagens

total_votos = sum(votos.values())
porcentagem_nulos = (votos[5] / total_votos) * 100
porcentagem_brancos = (votos[6] / total_votos) * 100

print(f'\nPorcentagem de votos nulos: {porcentagem_nulos:.2f}%')
print(f'Porcentagem de votos em branco: {porcentagem_brancos:.2f}%')

Determina o vencedor

votos_validos = {k: v for k, v in votos.items() if k in [1, 2, 3, 4]}
maior_voto = max(votos_validos.values())
vencedores = [k for k, v in votos_validos.items() if v == maior_voto]

if len(vencedores) == 1:
    print(f'\nO(a) vencedor(a) da eleição é o(a) candidato(a) {vencedores[0]}.')
else:
    print('\nA eleição terminou em empate entre os seguintes candidatos(as):')
    for v in vencedores:
        print(f'Candidato(a) {v}')

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
2 respostas
solução!

Ei! Tudo bem, John Lenon?

Excelente aplicação dos conceitos de estrutura de dados (dicionário para votos), laços de repetição (for e while), tratamento de exceções (‘try/except‘) e cálculo de métricas (porcentagens). O código está bem estruturado e a lógica para determinar o vencedor e tratar empates é clara.

Continue com o ótimo trabalho e avanço nos estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Olá! Tudo certo.

Valeu demais pelo feedback! Fico feliz que tenha curtido a estrutura e a lógica do código.

Bora seguir aprendendo e melhorando juntos!