Não sei como botar a programação simples e facil para fazer um sistema de votação usando o while

cand1 = input('Nome do(a) candidato(a) de número 1: ')
cand2 = input('Nome do(a) candidato(a) de número 2: ')
cand3 = input('Nome do(a) candidato(a) de número 3: ')
cand4 = input('Nome do(a) candidato(a) de número 4: ')
candidato = 0

 while True:
        candidato = str(input('ELEIÇÃO ESPECIAL\nDigite o numero do seu candidato: '))

while cand1 == '1' or cand2 == '2' or cand3 == '3' or cand4 == '4':
    if candidato == '1':
        cand1 += 1
    elif candidato == '2':
        cand2 += 1
    elif candidato == '3':
        cand3 += 1
    elif candidato == '4':
        cand4 += 1
    elif candidato == 'fim':
        candidato += 0
else:
    candidato = str(input('Digite um numero valido para o candidato: '))

    print('QUANTIDADE DE VOTOS')
    print('Candidato de número 1 total de: ' + str(cand1))
    print('Candidato de número 2 total de: ' + str(cand2))
    print('Candidato de número 3 total de: ' + str(cand3))
    print('Candidato de número 4 total de: ' + str(cand4))

    exit()

Vc usa a mesma variável para guardar o nome do candidato e depois para somar os votos do mesmo. O segundo while não faz sentido (e nem o else). candidato += 0 também não faz sentido (pra que somar zero? somar zero não muda nada - na verdade, nesse caso dá até erro, porque a variável candidato recebe primeiro uma string, então ao somar um número nela, dará erro).

E se vc tem variáveis do tipo “algumacoisa1”, “algumacoisa2”, etc, é um indício de que talvez deva usar outra estrutura. No caso, poderia ser uma lista de nomes. E para guardar os votos, use um dicionário, que mapeia cada nome para seu total de votos.

Então eu pessoalmente prefiro reescrever o código, ficaria assim:

qtd = 4 # quantidade de candidatos

# guarda o total de votos de cada candidato
votacao = {}
# adicione os nomes em uma lista
nomes = []
for i in range(1, qtd + 1):
    nome = input(f'Nome do(a) candidato(a) de número {i}: ')
    nomes.append(nome) # adiciona o nome na lista
    # candidato começa com zero votos
    votacao[nome] = 0

while True:
    print('ELEIÇÃO ESPECIAL')
    # imprime os nomes e números dos candidatos
    for i, nome in enumerate(nomes, start=1):
        print(f'{i} - {nome}')

    voto = input('Digite o número do seu candidato (ou "fim" para encerrar): ')
    if voto == 'fim':
        break # sai do while
    try:
        # converte o voto para número
        # subtrai 1 porque índices da lista começam em zero
        numero_candidato = int(voto) - 1
        if 0 <= numero_candidato < len(nomes):
            # adiciona um voto para o candidato
            votacao[nomes[numero_candidato]] += 1
        else:
            print('Não existe candidato com esse número')
    except ValueError:
        # se não digitou número, dá erro
        print('Digite um número')

print('QUANTIDADE DE VOTOS')
for i, candidato in enumerate(nomes, start=1):
    print(f'Candidato de número {i} ({candidato}) total de: {votacao[candidato]}')

Desta forma funciona para qualquer quantidade de candidatos. Já usando o seu código, cada vez que adicionasse um candidato você precisaria adicionar mais uma variável, o que se torna inviável para muitos candidatos.

1 curtida

Obrigado, estou no primeiro período e tava tentando fazer algo simples mas nao tava dando certo… Me ajudou bastante! Obrigado!