3
respostas

[Dúvida] Questão 9 - Contagem dos votos

Percebi que, ao executar o código, os votos inválidos são contados também. Existe alguma forma de contornar esse problema com o que aprendemos até aqui neste curso? Segue o código:

votos_candidato1 = 0
votos_candidato2 = 0
votos_candidato3 = 0
votos_candidato4 = 0
votos_nulos = 0
votos_branco = 0

for i in range(0,20): # 20 funcionários votando
    voto = int(input('Informe seu voto: '))
    if voto == 1:
        votos_candidato1 += 1
    elif voto == 2:
        votos_candidato2 += 1
    elif voto == 3:
        votos_candidato3 += 1
    elif voto == 4:
        votos_candidato4 += 1
    elif voto == 5:
        votos_nulos += 1
    elif voto == 6:
        votos_branco += 1
    else:
        print('Voto inválido.')

print(f'Votos candidato 1: {votos_candidato1}')
print(f'Votos candidato 2: {votos_candidato2}')
print(f'Votos candidato 3: {votos_candidato3}')
print(f'Votos candidato 4: {votos_candidato4}')
print(f'Votos nulos: {votos_nulos}')
print(f'Votos em branco: {votos_branco}')
print(f'Percentual de votos nulos: {(votos_nulos / 20 * 100)}')
print(f'Percentual de votos em branco: {(votos_branco / 20 * 100)}')
3 respostas

Bom dia, Wesley! Como vai?

Eu executei o código e ele está correto! Repare no resultado:

Saída de código mostrando resultados de votação: 3 votos cada um para quatro candidatos, 3 votos nulos e 3 votos em branco com porcentagens exibidas.

Ou seja, não há contagem de votos inválidos.

Se quiser, me envie um print de como os resultados estão sendo exibidos aí no seu computador!

Espero ter ajudado e fico à disposição se precisar.

Abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado

Então, Daniel. Minha questão é: se o funcionário votar errado, ainda assim entra na contagem de 20 votos. Por exemplo, no código acima, 18 de 20 funcionários digitaram corretamente. Mas os outros 2 que digitaram errado não tem como tentar votar novamente, entende?

Olá, Wesley! Tudo bem?

Compreendi melhor a sua dúvida!

Para não contabilizar os votos inválidos, podemos usar um laço while com try except para validar as entradas. Dessa maneira:

votos_candidato1 = 0
votos_candidato2 = 0
votos_candidato3 = 0
votos_candidato4 = 0
votos_nulos = 0
votos_branco = 0

total_votantes = 20

for i in range(total_votantes):
    while True:
        try:
            voto = int(input(f'Funcionário {i + 1}, informe seu voto (1-4 candidatos, 5 nulo, 6 branco): '))
            if voto == 1:
                votos_candidato1 += 1
                break
            elif voto == 2:
                votos_candidato2 += 1
                break
            elif voto == 3:
                votos_candidato3 += 1
                break
            elif voto == 4:
                votos_candidato4 += 1
                break
            elif voto == 5:
                votos_nulos += 1
                break
            elif voto == 6:
                votos_branco += 1
                break
            else:
                print('Voto inválido. Digite um número entre 1 e 6.')
        except ValueError:
            print('Entrada inválida. Digite apenas números inteiros.')

print(f'\nVotos candidato 1: {votos_candidato1}')
print(f'Votos candidato 2: {votos_candidato2}')
print(f'Votos candidato 3: {votos_candidato3}')
print(f'Votos candidato 4: {votos_candidato4}')
print(f'Votos nulos: {votos_nulos}')
print(f'Votos em branco: {votos_branco}')
print(f'Percentual de votos nulos: {(votos_nulos / total_votantes * 100):.2f}%')
print(f'Percentual de votos em branco: {(votos_branco / total_votantes * 100):.2f}%')

Também apliquei algumas melhorias, como a de exibir qual funcionário está votando e definir as casas decimais do percentual de votos nulos e brancos.

Espero ter ajudado e fico à disposição se precisar.

Abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado