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.
Obrigado, estou no primeiro período e tava tentando fazer algo simples mas nao tava dando certo… Me ajudou bastante! Obrigado!