me ha salido un pequeño imprevisto y es posible que no pueda ir con el bus del hackmeeting a la ida.
si alguien está interesado en coger el relevo... . . . . . . . . . . . . . Blackhold http://marsupi.org No atribueixis sentiments humans a les màquines, simplement no els agrada. Sé ecológico y en los mails borra el texto que no interesa (firmado: los administradores de la lista). 2010/8/23 d1d4c <[email protected]>: > Hola :) > > El 18/08/10 21:13, Blackhold escribió: > .../ >> >> no es la primera vez que monto transportes colectivos y supongo que no >> será la última. > > Pues si te sirve de algo, he escrito[0] en pyhton lo que comentaba en este > hilo. > > La salida que da, dada una lista (de hecho, un diccionario) de pasajeros[1] > en un archivo de texto con el importe máximo que cada una estaría dispuesta > a pagar, y dado el precio del hackbus (en el propio script), es esta: > > Precio del HackBus: 485.0 > Numero de pasajeros: 38 > Precio inicial del billete: 12.7631578947 > Precio final del billete: 15.6 > Suma en euros de los billetes de la clase A: 78.0 > suma en euros de lo que puede pagar la clase B: 407 > > Clase A (pagaran el billete integro): > ['alba', 'jose', 'josep', 'montse', 'ramon'] > > Clase B (pagaran una parte del billete, el maximo que dijeron que estaban > dispuestos a gastarse): > [('ana', 11), ('baltasar', 11), ('carme', 14), ('carmen', 12), ('chema', > 12), ('chus', 11), ('cristian', 12), ('cristina', 11), ('david', 11), > ('gonzalo', 11), ('hector', 11), ('joana', 14), ('jordi', 14), ('juan', 14), > ('julia', 15), ('leonor', 15), ('malen', 10), ('manolo', 10), ('manuela', > 9), ('maria', 13), ('martin', 13), ('monica', 12), ('nacho', 11), ('nestor', > 15), ('pep', 13), ('pepe', 12), ('raquel', 11), ('regina', 14), ('rosa', > 12), ('rosenda', 15), ('ruben', 13), ('sergio', 12), ('xavier', 13)] > > Como ves, la condición de 44 personas a 11€ o no hay hackbus, no es > estrictamente necesaria, pues otras opciones son posibles, como en el > ejemplo que doy, donde los pasajeros podrían pasar de tu condición, > organizarse por sí mismos e ir al Hackmeeting en ese bus, aun no habiendo > llegando a ser 44 e incluso pudiendo pagar una de ellas 9€ (en el ejemplo, > manuela). > > Es prácticamente mi primer script en python (y en cualquier lenguaje), así > que disculpad si tiene fallos de estilo o lo que sea. Y seguro que se podría > haber hecho mejor, con funciones, o de una manera más limpia... Cualquier > comentario al respecto será bien recibido :) > > > Saludos :) > > [0] cat calcula_precio_billete_HackBus.py > #! /usr/bin/env python > > ## Calcula el precio del billete cuando no > ## todas pueden pagarlo, viajando todas :) > ## (suponiendo que el numero de plazas es igual > ## o mayor que el de pasajeras) > > ## Nombres > hackbus = 485.0 > total_a = 0 > total_b = 0 > n = 1 > repetir = True > > a = {} ## Los que pagarian el billete integro > b = {} ## Los que solo una parte > d = {} > > > ## Lee el archivo y lo copia al diccionario 'a' > for i in file('pasajeros.txt'): > c = i.split() > a[c[0]] = int(c[1]) > > ## Calcula el precio inicial del billete > billete = hackbus / len(a) > precio_hackbus = hackbus > billete_inicial= billete > > ## Si a alguien no le llega para el billete, lo copia > ## al diccionario 'b', recalcula el nuevo billete > ## y repite la operacion si hace falta > while repetir: > for i in a: > if a[i] < billete: > d[i] = a[i] > hackbus -= a[i] > billete = hackbus / (len(a) - n) > n += 1 > if d: > claves = d.keys() > for i in claves: > del a[i] > b[i] = d[i] > del d[i] > n = 1 > else: repetir = False > > ## Suma el total de los valores del diccionario 'b', > valores = b.values() > for suma in valores: total_b += suma > suma = 0 > total_a = 0 > valores = a.values() > for suma in valores: total_a +=suma > > ## Ordena 'a' y 'b' > claseA = a.keys() > claseA.sort() > claseB = b.items() > claseB.sort() > > ## Imprime en la salida estantar > print > print "Precio del HackBus: " + str(precio_hackbus) > print "Numero de pasajeros: " + str(len(a) + len(b)) > print "Precio inicial del billete: " + str(billete_inicial) > print "Precio final del billete: " + str(billete) > print "Suma en euros de los billetes de la clase A: " + str(billete * > len(a)) > print "suma en euros de lo que puede pagar la clase B: " + str(total_b) > print > print "Clase A (pagaran el billete integro):" > print claseA > print > print "Clase B (pagaran una parte del billete, el maximo que dijeron que > estaban dispuestos a gastarse): " > print claseB > print > > > > [1] cat pasajeros.txt > alba 50 > ana 11 > baltasar 11 > carme 14 > carmen 12 > chema 12 > chus 11 > cristian 12 > cristina 11 > david 11 > gonzalo 11 > hector 11 > joana 14 > jordi 14 > jose 20 > josep 16 > juan 14 > julia 15 > leonor 15 > malen 10 > manolo 10 > maria 13 > martin 13 > monica 12 > montse 20 > nacho 11 > nestor 15 > pep 13 > pepe 12 > ramon 16 > raquel 11 > regina 14 > rosa 12 > rosenda 15 > ruben 13 > sergio 12 > xavier 13 > manuela 9 > _______________________________________________ HackMeeting mailing list [email protected] https://listas.sindominio.net/mailman/listinfo/hackmeeting
