Skip to content

Instantly share code, notes, and snippets.

@categulario
Created March 12, 2012 02:54
Show Gist options
  • Save categulario/2019431 to your computer and use it in GitHub Desktop.
Save categulario/2019431 to your computer and use it in GitHub Desktop.
Elección aleatoria de equipos y usuarios para una clase de cálculo, con soporte de cambios
#eleccion.py
"""
Este script soporta ser reiniciado varias veces, guardando los cambios cada vez
"""
from random import shuffle, choice
if __name__ == "__main__":
print "+--------------------------------+"
print "! Sistema de eleccion !"
print "! Aleatoria !"
print "+--------------------------------+"
try:
#Es posible que el archivo no exista y podria causar errores
f = file( "eleccion.dat" ) #Leemos el archivo
lineas = f.readlines() #Lo partimos en lineas
# En la primera linea estan el numero de equipos y el de ejercicios
# separados por un espacio
n_equipos = int( lineas[0][0:-1].split(" ")[0] )
n_ejercicios = int( lineas[0][0:-1].split(" ")[1] )
prev_usados = lineas[1][:-1].split(" ")
ejercicios = range(1, n_ejercicios + 1)
usados = []
for i in prev_usados:
usados.append(int(i))
ejercicios.remove(int(i))
except Exception, (strerror):
print "Error (%s)" % (strerror)
# El archivo no existe, asi que obtenemos la informacion
n_equipos = input("Cuantos equipos?: ")
n_ejercicios = input("Cuantos Ejercicios?: ")
ejercicios = range(1, n_ejercicios + 1)
usados = [] #Una lista para almacenar los ejercicios que ya pasaron
else:
# Esto solo se ejecuta si el try no tuvo problemas
# Solo queremos cerrar el archivo si se abrio
f.close()
equipos = range(1, n_equipos + 1)
print "Pulse enter para obtener una eleccion o escriba fin para salir"
shuffle(ejercicios) #Revolvemos la lista de ejercicios
while(ejercicios):
if raw_input() == "fin":
#Ya salimos, asi que vamos a guardar los cambios
try:
f = file("eleccion.dat", "w") #Abrimos el archivo para escritura
s = "" #vamos a hacer una cadena con los ejercicios usados
for i in usados:
s += str(i)+" " #Agregamos cada numero
s = s[:-1] #Quitamos el espacio en blanco final
f.write("%d %d\n%s"%(n_equipos, n_ejercicios, s))
except Exception, (errno, strerror):
print "Error (%s): %s" % (errno, strerror)
print """Vaya! parece que no tienes permiso de escribir
en esta carpeta, sentimos el inconveniente"""
else:
f.close()
break
else:
usados.append(ejercicios.pop())
print "Equipo", choice(equipos), "Ejercicio", usados[-1]
# En la instruccion anterior escojemos un equipo de forma aleatoria
# y tomamos el ultimo elemento de la lista de usados, recien
# aniadido
print
print "See you"
"""
FIN @Categulario
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment