Google+ Seguidores

lunes, 14 de abril de 2014

Ejercicio elección de estudiantes en python

    5

Elecciones de estudiantes en Python
Buenas, hace tiempo que no publicaba nada en el blog y que mejor que hacerlo con un ejercicio para arrancar la semana con todo. Hace poco me llego una consulta sobre un ejercicio de elecciones de estudiantes y me pareció interesante para publicarlo en el blog y recordar viejos conceptos.
Dejo planteada la pregunta y mi forma de resolverlo. Espero también puedan mandar sus soluciones.
Saludos

"Hola como estas Diego, estoy estudiando este programa que es fabuloso, pero he quedado atascado en un simple problema... 
visualizo la solución pero me es esquiva...
Escribir un programa para ser usado por el concejo de estudiantes en las próximas elecciones. El programa listara, y enumerara tres candidatos para presidente, entonces deja entrar los votos hasta que al ingresar cero el programa dará como resultado quien gano, que porcentaje gano cada candidato...
1. Diego Caraballo
2. Sandro Cruz
3. Luis Perez
son los candidatos... lo que no puedo es obtener el numero de votantes mediante el conteo de cada voto, puesto que cada voto representa un votante...
gracias de antemano"

Solución:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import time

def elecciones():
votos_diego = 0
votos_sandro = 0
votos_luis = 0

x = 5
total = 0
ganador = ""

while x != "0":
os.system("cls")
print "SISTEMA DE ELECCIONES"
print ""
print "Seleccione el numero de candidato a votar, para salir digite 0"
print ""
print "1)Diego Caraballo"
print "2)Sandro Cruz"
print "3)Luis Perez"
print ""
x = raw_input ("A quien vas a votar: ")
print ""
if x == "1" or x == "2" or x == "3":
total += 1


if x != "0" and x != "1" and x != "2" and x != "3":
print "Opcion no valida, intete de nuevo..."
time.sleep(1)
elif x == "1":
votos_diego += 1
elif x == "2":
votos_sandro += 1
elif x == "3":
votos_luis += 1


if total == 0:
print "No hubieron votos..."
print ""
time.sleep(2)
return 0
else:
porcen_diego = float(100 * votos_diego) / float (total)
porcen_sandro = float(100 * votos_sandro) / float (total)
porcen_luis = float(100 * votos_luis) / float (total)

if votos_diego > votos_sandro and votos_diego > votos_luis:
ganador = "El ganador fue Diego Caraballo"
elif votos_sandro > votos_diego and votos_sandro > votos_luis:
ganador = "El ganador fue Sandro Cruz"
elif votos_luis > votos_diego and votos_luis > votos_sandro:
ganador = "El ganador fue Luis Perez"
elif votos_luis == votos_diego and votos_luis == votos_sandro:
ganador = "Hubo un triple empate"
elif votos_diego == votos_sandro and votos_diego > votos_luis:
ganador = "Hubo un doble empate entre Diego Caraballo y Sandro Cruz"
elif votos_sandro == votos_luis and votos_sandro > votos_diego:
ganador = "Hubo un doble empate entre Sandro Cruz y Luis Perez"
elif votos_luis == votos_diego and votos_luis > votos_sandro:
ganador = "Hubo un doble empate entre Luis Perez y Diego Caraballo"

print "Cantidad de votos: ", total
print ""
print "Cantidad de votos para Diego Caraballo: ", votos_diego, "--> %.2f" % porcen_diego + "%"
print ""
print "Cantidad de votos para Sandro Cruz: ", votos_sandro, "--> %.2f" % porcen_sandro + "%"
print ""
print "Cantidad de votos para Luis Perez: ", votos_luis, "--> %.2f" % porcen_luis + "%"
print ""
print ganador
print ""

elecciones()

5 comentarios:
Write comentarios
  1. Diego como estas bro... Semana pasada ausente por problemas on mi laptop.
    Tu programa esta bravaso, pero creo q esta basado en otra version de python verdad? yo la arregle para la version 3.3.5 que es la que tengo y corre de esta manera...


    print("Welcome to the Student Election Center")

    str(input("Please press enter to see the candidates that run for president:"))
    print("1. Sir John A. Macdonald\n" + "2. Alexander Mackenzie\n" + "3. Sir John Abbot\n")

    # Compute Votes

    votes_Macdonald = 0
    votes_Mackenzie = 0
    votes_Abbot = 0

    # Assigning x the value of 5 will guaranty that the program count each vote as number of voters

    x = 5
    total = 0

    # Choosing candidates

    while x != 0:
    print("Please enter the number of the candidate, to exit press 0 and enter")
    x = eval(input("Candidate to President: "))

    if x == 1 or x == 2 or x == 3:
    total += 1 # counting the number of voters


    if x != 0 and x != 1 and x != 2 and x != 3:
    print("Invalid option, try again...")
    elif x == 1:
    votes_Macdonald += 1
    elif x == 2:
    votes_Mackenzie += 1
    elif x == 3:
    votes_Abbot += 1

    # Percentage of votes

    else:
    percen_Macdonald = float((100 * votes_Macdonald) / (total))
    percen_Mackenzie = float((100 * votes_Mackenzie) / (total))
    percen_Abbot = float((100 * votes_Abbot) / (total))
    break

    # Finding the winner and possible draws
    # Draws are not common in elections but this program will show and work that possibility

    if votes_Macdonald > votes_Mackenzie and votes_Macdonald > votes_Abbot: # Finding one winner
    Winner = ("Sir John A. Macdonald")
    elif votes_Mackenzie > votes_Macdonald and votes_Mackenzie > votes_Abbot:
    Winner = ("Alexander Mackenzie")
    elif votes_Abbot > votes_Macdonald and votes_Abbot > votes_Mackenzie:
    Winner = ("Sir John Abbot")
    elif votes_Abbot == votes_Macdonald and votes_Abbot == votes_Mackenzie: # Possible triple draw
    Winner = ("No President, there is a triple draw")
    elif votes_Macdonald == votes_Mackenzie and votes_Macdonald > votes_Abbot:
    Winner = ("No President, there is a double draw between Sir John A. Macdonald and Alexander Mackenzie") # Double draws
    elif votes_Mackenzie == votes_Abbot and votes_Mackenzie > votes_Macdonald:
    Winner = ("No President, there is a double draw between Alexander Mackenzie and Sir John Abbot")
    elif votes_Abbot == votes_Macdonald and votes_Abbot > votes_Mackenzie:
    Winner = ("No President, there is a double draw between Sir John Abbot and Sir John A. Macdonald")

    # Displaying results

    print ("Number of votes: ", total)

    # Percentage with two centesimal digits shows accurate results

    print ("Number of votes for Sir John A. Macdonald: ", votes_Macdonald, "--> %.2f" % percen_Macdonald + "%")
    print ("Number of votes for Alexander Mackenzie: ", votes_Mackenzie , "--> %.2f" % percen_Mackenzie + "%")
    print ("Number of votes for Sir John Abbot: ", votes_Abbot, "--> %.2f" % percen_Abbot + "%")
    print ("The new President is: ", Winner)


    ResponderEliminar
  2. con los respectivos espacios el programa corre y esta basado en el programa que tu posteaste... gracias man

    ResponderEliminar
    Respuestas
    1. Hola S.M.C, lo de las sangrías me lo imagine. En este momento estoy trabajando con python 2.7 y no voy a poder probar tu script, pero confío en ti jaja. Ni bien pueda verlo te comento.
      Abrazo

      Eliminar
  3. Como estas Diego, este es Sandro de Nuevo... Ahora tengo otro ejercicio que intentare hacer a continuacion... Como la primera vez espero recibir algo de guia y/o ayuda de tu parte bro. Este ejercicio quedara para el record al parecer jajaja.
    Salu2 y a programar se haa dicho!!!

    ResponderEliminar
  4. escribir un programa usando Nested Loops para similar una caja registradora. El programa aceptara el precio de cosas compradas hasta que el precio de alguna de ellas sea 0. Al final se le pedirá al cliente si tienen cupones, se suministra el número de cupones y un bucle aceptará el valor nominal de cada cupón y lo resta del total. El programa imprimirá la factura total para el cliente, el número de artículos adquiridos, el precio medio de compra de todos los artículos no incluidos cupones y la cantidad total de ahorro de uso de los cupones. La caja registradora tiene un monto inicial de US $ 150.00. El programa procesará los clientes, siempre y cuando la respuesta a una petición de orden es "Y" "Sí", o "y". Al finalizar el programa imprime el número de clientes procesados ​​y la cantidad total de dinero en la caja registradora.

    Requerimientos:
    Utilice un bucle para repetir siempre que la primera respuesta a un símbolo del carácter es 'Y'.
    • Utilice un bucle para repetir los elementos hasta que se introduce 0 indica que no más artículos.
    • Cuando no hay más elementos de un mensaje que pregunta si usted tiene todos los cupones? En caso afirmativo ¿cuántas.
    • Un bucle se repite para el número de cupones, lee el valor nominal de cada cupón, desde el teclado y lo resta del total.

    GRACIAS

    ResponderEliminar

Tu comentario es importante y nos motiva a seguir escribiendo...

Entradas más recientes

© 2014 Mi diario Python. Designed by Bloggertheme9 | Distributed By Gooyaabi Templates
Powered by Blogger.