estructuras de repetición como el while y el for (Parte 3) ejercicio 9
"""
9 - En una elección para la gerencia de una empresa con 20 empleados, hay cuatro candidatos. Escribe un programa que calcule al ganador de la elección. La votación se realizó de la siguiente manera:
Cada empleado votó por uno de los cuatro candidatos (representados por los números 1, 2, 3 y 4).
También se contaron los votos nulos (representados por el número 5) y los votos en blanco (representados por el número 6).
Al final de la votación, el programa debe mostrar el número total de votos para cada candidato, los votos nulos y los votos en blanco. Además, debe calcular y mostrar el porcentaje de votos nulos con respecto al total de votos y el porcentaje de votos en blanco con respecto al total de votos.
"""
# 9 - Simulación de elección con 20 empleados.- Elección para la gerencia
print("\n--- Desafío 9: Elección de Gerencia ---")
TOTAL_VOTOS = 20
# Contadores para votos.
candidato_1 = 0
candidato_2 = 0
candidato_3 = 0
candidato_4 = 0
votos_nulos = 0 # Opción 5
votos_blancos = 0 # Opción 6
print("Opciones: 1, 2, 3, 4 (Candidatos); 5 (Nulo); 6 (Blanco)")
# Uso de 'for' para controlar los 20 votos.
for i in range(1, TOTAL_VOTOS + 1): #el valor final de range sera 20
voto_valido = False
# Ciclo ((lazo o bucle) 'while' para la validación del voto
while voto_valido == False:
# se asume que el usuario ingresa un entero, aunque podría ser incorrecto.
voto = int(input(f"Voto del empleado {i} de {TOTAL_VOTOS}: "))
if voto >= 1 and voto <= 6:
voto_valido = True
# Contabilizar el voto válido
if voto == 1:
candidato_1 = candidato_1 + 1
elif voto == 2:
candidato_2 = candidato_2 + 1
elif voto == 3:
candidato_3 = candidato_3 + 1
elif voto == 4:
candidato_4 = candidato_4 + 1
elif voto == 5:
votos_nulos = votos_nulos + 1
elif voto == 6:
votos_blancos = votos_blancos + 1
else:
print("Opción inválida. Ingresa 1, 2, 3, 4, 5 o 6.")
# --- Cálculos y Resultados --- Estadistica
# Calcular porcentajes %. Un % = razon matematica entre la parte y el todo.
if TOTAL_VOTOS > 0:
porcentaje_nulos = (votos_nulos / TOTAL_VOTOS) * 100
porcentaje_blancos = (votos_blancos / TOTAL_VOTOS) * 100
else:
porcentaje_nulos = 0
porcentaje_blancos = 0
# Determinar el ganador (simplificado para los 4 candidatos). max_votos y ganador son variables para controlar o comparar estado de c/candidato.
max_votos = -1
ganador = -1
empate = False
# Candidato 1
if candidato_1 > max_votos:
max_votos = candidato_1
ganador = 1
empate = False
elif candidato_1 == max_votos:
empate = True
# Candidato 2
if candidato_2 > max_votos:
max_votos = candidato_2
ganador = 2
empate = False
elif candidato_2 == max_votos:
empate = True
# Candidato 3
if candidato_3 > max_votos:
max_votos = candidato_3
ganador = 3
empate = False
elif candidato_3 == max_votos:
empate = True
# Candidato 4
if candidato_4 > max_votos:
max_votos = candidato_4
ganador = 4
empate = False
elif candidato_4 == max_votos:
empate = True
# Mostrar el resultado final del ganador
if empate == True or max_votos == -1: # Si hubo empate o no hubo votos
resultado_ganador = "¡Empate entre los candidatos principales!"
else:
resultado_ganador = f"El ganador es el Candidato {ganador} con {max_votos} votos."
print("\n--- Resultados de la Elección ---")
print(f"Total de votos emitidos: {TOTAL_VOTOS}")
print("\nVotos por Candidato:")
print(f"Candidato 1: {candidato_1} votos")
print(f"Candidato 2: {candidato_2} votos")
print(f"Candidato 3: {candidato_3} votos")
print(f"Candidato 4: {candidato_4} votos")
print("\nOtros Votos:")
print(f"Votos Nulos (5): {votos_nulos} votos ({porcentaje_nulos:.2f}%)")
print(f"Votos en Blanco (6): {votos_blancos} votos ({porcentaje_blancos:.2f}%)")
print(f"\n**{resultado_ganador}**")
print("\n**Gracias por haber participado del proceso de eleccion de Gerente **")