Bom dia a todos! Estou começando python por esse curso e decidi compartilhar a minha resolução da questão 9 pois foi a que mais me diverti montando, já que fui utilizando tudo o que aprendi nos exercícios anteriores pra chegar no código final. No mais, se houver espaço pra melhoria e/ou redução de informações no meu código, ficaria feliz em ouvir outras opiniões. Adicionei os comentários em cada etapa pra indicar a linha de raciocínio:
#Variáveis com cada opção de voto
c1 = 0
c2 = 0
c3 = 0
c4 = 0
nulo = 0
branco = 0
votos = 0 #Quantidade geral de votos
while votos < 20: #definido loop em até 20 votos válidos
print('Olá! Digite seu voto entre 1 a 4 (5 para nulo e 6 para em branco)')
#input de votação
votacao = int(input('Digite seu Voto: '))
#Acréscimos pra cada possibilidade de voto do usuário e no total de votos
if votacao == 1:
c1 += 1
votos += 1
elif votacao == 2:
c2 += 1
votos +=1
elif votacao == 3:
c3 += 1
votos +=1
elif votacao == 4:
c4 += 1
votos +=1
elif votacao == 5:
nulo += 1
votos +=1
elif votacao == 6:
branco += 1
votos +=1
else:
print('Digite um número válido') #Caso não esteja na lista de valores, solicita novamente...
continue # ... E reinicia o loop
#Imprime o vencedor da eleição através de if/elif/else
if (c1 > c2) and (c1 > c3) and (c1 > c4):
print(f'|O cadidato eleito foi: Cadidato 1|!')
elif (c2 > c1) and (c2 > c3) and (c2 > c4):
print(f'|O cadidato eleito foi: Cadidato 2|!')
elif (c3 > c1) and (c3 > c2) and (c3 > c4):
print(f'|O cadidato eleito foi: Cadidato 3|!')
elif (c4 > c1) and (c4 > c2) and (c4 > c3):
print(f'|O cadidato eleito foi: Cadidato 4|!')
else: #Caso empate ou os maiores votos sejam nulo/branco - mensagem aparece:
print(f'|Devido a grandes votos em branco/nulo ou empate, haverá um Segundo turno|!')
#Imprime os votos totais de cada candidato
print(f'|Candidato 1 - {c1}|')
print(f'|Candidato 2 - {c2}|')
print(f'|Candidato 3 - {c3}|')
print(f'|Candidato 4 - {c4}|')
print(f'|Votos nulo - {nulo}|')
print(f'|Votos em Branco - {branco}|')
#Imprime os votos totais
print(f'|Total de Votos - {votos}|')
#Mostra quantos % foram nulos e em branco
print(f'|Taxa de votos nulos - {round(nulo/votos*100 , 2)}%|')
print(f'|Taxa de votos em Branco - {round(branco/votos*100 , 2)}%|')