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

[Bug] ATRIBUIÇÕES (EXERCíCIO DE VOTOS)

Boa noite!

Gostaria de ajuda, estou tentando concluir o exercício de sobre criar um sistema de votos mas estou enfrentando dificuldades em atribuir uma variável a outra e incrementá-la, os valores de a cordo com a atribuição correta. O programa deveria, por exemplo, ao digitar 1 ler todas as outras vezes em que foi digitado 1 e acumula-las fornecendo o resultado acumulado.

Gostaria de tentar fazer sozinho antes de partir para correção.
Agradeço desde já.

# eleição para gerência em uma empresa com 20 funcionários
        # Estrutura de repetição
# 1,2,3 e 4 = para os 4 Candidatos
# 5 = Para votos nulos
# 6 = Para votos em branco
        # Opções
        # estrutura condicional
# o programa deve exibir o total de votos para cada candidato
# o número de votos nulos
# o número de votos brancos
# calcular e exibir a porcentagem de votos nulos em relação ao total de votos e a porcentagem de votos em branco em relação ao total de votos.

print('='*20)
print('ELEIÇÕES')
print('='*20)

candidato1 = 0
candidato2 = 0
candidato3 = 0
candidato4 = 0
nulo = 0
branco = 0
voto = 0
# Variaveis acumuladoras 

for v in range(1,5):
    print('[1] Para o primeiro candidato')
    print('[2] Para o Segundo candidato')
    print('[3] Para o Terceiro candidato')
    print('[4] Para o Quarto candidato')
    print('[5] Para anular o voto')
    print('[6] Para votar em branco')
    voto = int(input('>>> Vote aqui em seu candidato!: '))
    voto += 1
    while voto < 1 or voto > 6:
        voto = int(input('Tente novamente, digite um numero valido!: '))
        # While precisa ter acesso á variavel novamente
        # Dessa forma ele analisa e exclui a variavel incorreta, reinicia o laço condicional ou preserva o valor correto
    print('Obrigado por votar!')
        # A variavel sai do laço while se correta
        # programa agradece por passar um valor correto
        # pula pro proximo ciclo de voto
    if voto == 1:
        candidato1 += voto
        # Candidato está recebendo a variavel voto que se acumula
        # Voto se acumula dentro de 'candidato' a cada vez se a entrada do usuario for 1
    if voto == 2:
        candidato2 += voto
    if voto == 3:
        candidato3 += voto
    if voto == 4:
        candidato4 += voto
    if voto == 5:
        nulo += voto
    if voto == 6:
        branco += voto
    print('-'*20)
print('RESULTDOS')
print(f'cdt 1: {candidato1}')
print(f'cdt 2: {candidato2}')
print(f'cdt 3: {candidato3}')
print(f'cdt 4: {candidato4}')
print(f'Nulo: {nulo}')
print(f'Brancos: {branco}')

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
2 respostas
solução!

Olá Gabriel, tudo bem?

Você está no caminho certo, mas há um detalhe que precisa ser ajustado no seu código. O que está acontecendo é que você está incrementando o valor da variável voto antes de verificar em qual candidato ou opção ele deve ser acumulado. Isso faz com que o valor acumulado para cada candidato ou opção seja sempre incrementado em um a mais do que deveria.

Você pode corrigir assim:

  1. Remova a linha voto += 1: Você não precisa incrementar a variável voto. Ela deve apenas representar a escolha do usuário, que já está correta após a entrada.

  2. Acumule apenas 1 voto por escolha: Ao invés de somar voto ao contador de cada candidato, você deve somar apenas 1, já que cada voto conta como um único voto.

Código corrigido:

for v in range(1, 5):
    print('[1] Para o primeiro candidato')
    print('[2] Para o Segundo candidato')
    print('[3] Para o Terceiro candidato')
    print('[4] Para o Quarto candidato')
    print('[5] Para anular o voto')
    print('[6] Para votar em branco')
    voto = int(input('>>> Vote aqui em seu candidato!: '))
    while voto < 1 or voto > 6:
        voto = int(input('Tente novamente, digite um numero valido!: '))
    print('Obrigado por votar!')

    if voto == 1:
        candidato1 += 1
    elif voto == 2:
        candidato2 += 1
    elif voto == 3:
        candidato3 += 1
    elif voto == 4:
        candidato4 += 1
    elif voto == 5:
        nulo += 1
    elif voto == 6:
        branco += 1
    print('-'*20)

print('RESULTADOS')
print(f'cdt 1: {candidato1}')
print(f'cdt 2: {candidato2}')
print(f'cdt 3: {candidato3}')
print(f'cdt 4: {candidato4}')
print(f'Nulo: {nulo}')
print(f'Brancos: {branco}')

Espero ter ajudado.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Muito obrigado! Aprendi muito com isso!