Oi pessoal, tudo bem?
No desafio 09 das estruturas de repetição eu resolvi de duas formas. Na primeira (abaixo) usando while funcionou legal, aqui não encontrei nenhum problema apesar de não ser a mais elegante:
voto_usuario = int(input("Digite o número do seu candidato:\n 1: João\n 2: Maria\n 3:José\n 4:Josefina\n 5:Nulo\n 6:Branco"))
cont_votantes = 0
cont1 = 0
cont2 = 0
cont3 = 0
cont4 = 0
cont5 = 0
cont6 = 0
while cont_votantes < 20:
if voto_usuario < 1 or voto_usuario > 6:
print("Voto do usuário é inválido, por favor, verifique o número digitado!")
voto_usuario = int(input("Digite o número do seu candidato:\n 1: João\n 2: Maria\n 3:José\n 4:Josefina\n 5:Nulo\n 6:Branco"))
else:
if voto_usuario == 1:
cont1 += 1
cont_votantes +=1
voto_usuario = int(input("Digite o número do seu candidato:\n 1: João\n 2: Maria\n 3:José\n 4:Josefina\n 5:Nulo\n 6:Branco"))
elif voto_usuario == 2:
cont2 += 1
cont_votantes +=1
voto_usuario = int(input("Digite o número do seu candidato:\n 1: João\n 2: Maria\n 3:José\n 4:Josefina\n 5:Nulo\n 6:Branco"))
elif voto_usuario == 3:
cont3 += 1
cont_votantes += 1
voto_usuario = int(input("Digite o número do seu candidato:\n 1: João\n 2: Maria\n 3:José\n 4:Josefina\n 5:Nulo\n 6:Branco"))
elif voto_usuario == 4:
cont4 += 1
cont_votantes += 1
voto_usuario = int(input("Digite o número do seu candidato:\n 1: João\n 2: Maria\n 3:José\n 4:Josefina\n 5:Nulo\n 6:Branco"))
elif voto_usuario == 5:
cont5 += 1
cont_votantes += 1
voto_usuario = int(input("Digite o número do seu candidato:\n 1: João\n 2: Maria\n 3:José\n 4:Josefina\n 5:Nulo\n 6:Branco"))
elif voto_usuario == 6:
cont6 += 1
cont_votantes += 1
voto_usuario = int(input("Digite o número do seu candidato:\n 1: João\n 2: Maria\n 3:José\n 4:Josefina\n 5:Nulo\n 6:Branco"))
total_de_votos = cont1 + cont2 + cont3 + cont4 + cont5 + cont6
percent_nulos = (cont5 / cont_votantes) * 100
percent_brancos = (cont6 / cont_votantes) * 100
print(f'Total de votantes na eleição foi de: {total_de_votos}\nApuração:\nJoão: {cont1} votos\nMaria: {cont2} votos\nJosé: {cont3} votos\nJosefina: {cont4} votos\nNulos: {cont5} votos\nBrancos: {cont6} votos\nPercentual de nulos foi de: {percent_nulos}%\nPercentual de brancos foi de: {percent_brancos}%')
Tentei fazer outra versão com "for", um pouco mais próxima do que foi colocado como resolução na aula. No entanto, estou com algum problema na reinicialização das variáveis. Aparentemente toda vez que eu executo o código novamente, parece que as variáveis não estão sendo "zeradas" para começar as eleições a partir do voto "0" e acaba saindo uns resultos esquisitos. Meu código ficou assim:
###método 2
cont1 = 0
cont2 = 0
cont3 = 0
cont4 = 0
cont5 = 0
cont6 = 0
for votos in range(0,20):
voto_usuario = int(input("Digite o número do seu candidato:\n 1: João\n 2: Maria\n 3:José\n 4:Josefina\n 5:Nulo\n 6:Branco"))
if voto_usuario < 1 or voto_usuario > 6:
print("Voto do usuário é inválido, por favor, verifique o número digitado!")
voto_usuario = int(input("Digite o número do seu candidato:\n 1: João\n 2: Maria\n 3:José\n 4:Josefina\n 5:Nulo\n 6:Branco"))
else:
if voto_usuario == 1:
cont1 += 1
elif voto_usuario == 2:
cont2 += 1
elif voto_usuario == 3:
cont3 += 1
elif voto_usuario == 4:
cont4 += 1
elif voto_usuario == 5:
cont5 += 13
elif voto_usuario == 6:
cont6 += 1
total_de_votos = cont1 + cont2 + cont3 + cont4 + cont5 + cont6
percent_nulos = (cont5 / cont_votantes) * 100
percent_brancos = (cont6 / cont_votantes) * 100
print(f'Total de votantes na eleição foi de: {total_de_votos}\nApuração:\nJoão: {cont1} votos\nMaria: {cont2} votos\nJosé: {cont3} votos\nJosefina: {cont4} votos\nNulos: {cont5} votos\nBrancos: {cont6} votos\nPercentual de nulos foi de: {percent_nulos}%\nPercentual de brancos foi de: {percent_brancos}%')
E o resultado obtido na saída depois de ter rodado 2 vezes o programa somou 56 votos quando na verdade deveria ter somado somente 20 votos, independentemente do número de vezes que eu rodo o meu código.
Restultado:
Total de votantes na eleição foi de: 56 Apuração: João: 3 votos Maria: 4 votos José: 4 votos Josefina: 4 votos Nulos: 39 votos Brancos: 2 votos Percentual de nulos foi de: 195.0% Percentual de brancos foi de: 10.0%
Será que eu preciso passar alguma linha para informar a reinicialização das variáveis?
Muito obrigado por quem puder apoiar aqui! :)