Oi, Rafael! Como vai?
Ótima pergunta! Uma forma de resolver esse problema seria adicionando uma variável booleana que verifica se o voto foi válido ou não. Enquanto o voto não for válido, o loop não irá para a próxima iteração.
Ficaria assim:
# Inicializamos as variáveis contadoras
votos_candidato1 = 0
votos_candidato2 = 0
votos_candidato3 = 0
votos_candidato4 = 0
votos_nulos = 0
votos_branco = 0
# Início do laço para ler os votos
for i in range(20):
voto_valido = False
while not voto_valido:
voto = int(input('Informe seu voto: '))
if voto == 1:
votos_candidato1 += 1
voto_valido = True
elif voto == 2:
votos_candidato2 += 1
voto_valido = True
elif voto == 3:
votos_candidato3 += 1
voto_valido = True
elif voto == 4:
votos_candidato4 += 1
voto_valido = True
elif voto == 5:
votos_nulos += 1
voto_valido = True
elif voto == 6:
votos_branco += 1
voto_valido = True
else:
print("Voto inválido. Tente novamente.")
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)}')
Espero ter contribuído com seu raciocínio!
Forte abraço.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!