Boa noite!
Ao me deparar com o exercício 9, percebi que o operardor for
não permite que a variável atribuída a ele seja alterada por um operador posterior (diferente do que ocorre quando utilizamos while
, no qual é possível subtrair ou adicionar valor, a depender da necessidade, para cessar a estrutura de repetição). Melhor exemplificando:
candidato_1 = 0
candidato_2 = 0
candidato_3 = 0
candidato_4 = 0
voto_nulo = 0
voto_branco = 0
voto_valido = 0
for i in range(20):
voto = int(input('Insira o número referente ao candidato desejado\n(5 = nulo e 6 = branco): '))
if voto == 1:
candidato_1 += 1
voto_valido += 1
elif voto == 2:
candidato_2 += 1
voto_valido += 1
elif voto == 3:
candidato_3 += 1
voto_valido += 1
elif voto == 4:
candidato_4 += 1
voto_valido += 1
elif voto == 5:
voto_nulo += 1
elif voto == 6:
voto_branco += 1
else:
print('Voto inválido. Digite outro valor')
i -= 1
p_nulo = (voto_nulo / 20) * 100
p_branco = (voto_branco / 20) * 100
print(f'O candidato 1 recebeu {candidato_1} votos\nO candidadto 2 recebeu {candidato_2} votos\nO candidato 3 recebeu {candidato_3} votos\nO candidato 4 recebeu {candidato_4} votos\nForam computados {voto_nulo} votos nulos\nForam computados {voto_branco} votos brancos')
print(f'Houve {p_nulo}% de votos nulos e {p_branco}% de votos brancos')
O código i -=1
não modifica o valor de i
dentro da estrutura for i in range(20)
quando o valor inserido pelo usuário é diferente daqueles pré-estabelecidos (número do candidato ou voto nulo/branco). Neste caso, acredito que não faria diferença, pois o número inserido fora daqueles pré-estabelecidos resulta em voto nulo numa votação real.
Mas e em outros casos:
É isso mesmo? Não é possível modificar essa variável quando atrelada ao operador for
?
Qual é a razão de não ser possível modificá-la?
Vi algo no manual de python sobre essa variável criada pelo for
ser uma variável "temporária". A sua inalterabilidade é em razão disso?