Ejercicio PHP | Ejercicio Python : Sorteo de alumnos

Hace unos días me vi en la necesidad de hacer un rápido sorteo para el orden de presentación de trabajos finales de un curso que dicto. Me pareció muy simple hacer el respectivo sorteo usando PHP, y de paso también decidí hacerlo con Python, gracias a una sugerencia 😛 (twit).

Antes de empezar debo aclarar que la lista de alumnos se encuentra en un archivo de texto, llamado alumnos6to

Sorteo con PHP:

Voy a obviar algunos detalles en el orden e ire al grano.

Primero almaceno en un array (arreglo) el contenido del archivo alumnos6to

$alumnos = file('alumnos6to');

Luego se puede imprimir el arreglo para visualizar la lista original, se podria hacer con una función creada: imprimir($alumnos):

function imprimir($array){
echo "<ol class='alumnos'>";
foreach ($array as $valor){
echo "<li>$valor</li>";
}
echo "</ol>";
}

Luego se hace la mezcla aleatoria con:

shuffle($alumnos);

Y por ultimo se vuelve a imprimir la lista, ya mezclada aleatóriamente:

imprimir($alumnos);

Y ya se hizo el sorteo.

Sorteo con Python:

Con Python haré el mismo proceso, solo que tendré un archivo resultante llamado: aleatorio, antes de empezar a obtener el contenido del archivo de texto, importé el modulo random, luego importé el contenido del archivo alumnos6to y lo almacené en una lista llamada alumno, usé la función shuffle() que permite mezclar la lista y por ultimo guardé la lista mezclada en el archivo aleatorio..

El código para realizar esto es el siguiente:

from random import *
alumno = []
for nombre in file('alumnos6to'):
alumno.append([nombre])
shuffle(alumno)
aleatorio = file('aleatorio','w')
for nombre in alumno:
aleatorio.write(str(nombre)+'n')

Los archivos completos pueden ser descargados desde aqui.

Esta es solo una, de las muchas maneras de aleatorizar una lista de elementos.

Happy coding 🙂

Publicado por Sergio Infante

Software Developer

11 comentarios sobre “Ejercicio PHP | Ejercicio Python : Sorteo de alumnos

  1. Buena profe 😀
    El codigo es simple, aunque hay algunos comandos que todavia no aprendo…
    Que diferencia entre el codigo python y PHP.
    PD: Summm quizo decir «MY GOD» xD
    Summm es beger xD jajajjaja

    Me gusta

  2. hola Sergio!

    algunos comentarios sobre el código (si no te molesta):
    #
    en general se recomienda (pep8) no hacer esto:
    from random import *
    es mejor:
    import random
    es aceptable:
    from random import shuffle
    #
    esto es frecuente y por eso hay una forma idiomática (list comprehension):
    alumno = []
    for nombre in file(‘alumnos6to’):
    alumno.append([nombre])

    por esto:
    alumnos = [alumno for alumno in open(input_file)]
    #
    en el fichero aleatorio que te queda, queda cada nombre dentro de una lista!
    el detalle es que haces alumno.append([nombre]) en lugar de alumno.append(nombre)
    y por eso cuando escribes en aleatorio es innecesario hacer aleatorio.write(str(nombre) + ‘n’)

    Se puede mejorar si generalizamos un poco, que tal si pasamos cualquier fichero y que nos escupa el fichero con las lineas en orden aleatorio; pero que lo escupa a salida estandar en lugar de guardarlo, finalmente siempre puedes guardarlo redirigiendo la salida estandar o puedes querer hacer algo más con cada linea y puedes mandarlo a otro proceso por una tuberia, básicamente es seguir un poco la filosofía de unix.

    Quizá algo así

    #!/usr/bin/python
    import sys
    import random

    def shuffle(input_file):
    alumnos = [alumno for alumno in open(input_file)]
    random.shuffle(alumnos)
    for alumno in alumnos:
    sys.stdout.write(alumno)

    if __name__ == ‘__main__’:
    usage = «»»usage: shuffle INPUT_FILE»»»
    if len(sys.argv) aleatorio

    Me gusta

  3. Los comentarios de >(skraelings)< son muy buenos pero yo pienso q el cod q iso neosergio esta hecho para la gente q re esta iniciando en python pero muy buenos los comentarios me han servido de mucho … xD chavez_punto_py

    Me gusta

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.