1
resposta

Dúvida no exercício 9

No exercício 9, uma parte do código sugere que tenha um else retornando um print com "Voto inválido."

else:
    print("Voto inválido.")

Nesse caso, quando rodo o código percebi que esse voto é ignorado e não volta a ser reconsiderado no final da execução. Ou seja, caso alguém erre o voto não poderia votar novamente levando pra uma situação literal. Existe algum comando no python no qual seja possível caso o voto seja inválido não contar como uma iteração do for e deixar a pessoa realizar o voto novamente?

1 resposta

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!