From agtugo en gmail.com Sun Sep 2 21:13:54 2018 From: agtugo en gmail.com (AGTUGO) Date: Sun, 2 Sep 2018 20:13:54 -0500 Subject: [Python-es] Euler project Message-ID: Hola pythoneros, Para mantenerme en forma resuelvo de vez en vez problemas de https://projecteuler.net, aunque ahí en los foros usan todos los lenguajes, sería interesante discutir un problema a la semana para ver estilos y métodos. Objetos, comprensión de listas, cython, numpy, multithreaded, pandas, etc. Aunque no sé si aquí sea el lugar indicado pero me encantaría que así fuera. Saludos. Arturo M. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From acolorado en gmail.com Sun Sep 2 21:18:59 2018 From: acolorado en gmail.com (JZA) Date: Sun, 2 Sep 2018 20:18:59 -0500 Subject: [Python-es] Euler project In-Reply-To: References: Message-ID: Recomiendo escucharse el podcast de TalkPython.fm On Sun, Sep 2, 2018 at 8:14 PM AGTUGO wrote: > Hola pythoneros, > > Para mantenerme en forma resuelvo de vez en vez problemas de > https://projecteuler.net, aunque ahí en los foros usan todos los > lenguajes, sería interesante discutir un problema a la semana para ver > estilos y métodos. Objetos, comprensión de listas, cython, numpy, > multithreaded, pandas, etc. Aunque no sé si aquí sea el lugar indicado pero > me encantaría que así fuera. Saludos. > > Arturo M. > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > -- Alexandro Colorado Apache OpenOffice Contributor 9060 55AB FFD2 2F02 0E1A 3409 599C 14FC 9450 D3CF ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From agtugo en gmail.com Mon Sep 3 00:54:47 2018 From: agtugo en gmail.com (AGTUGO) Date: Sun, 2 Sep 2018 23:54:47 -0500 Subject: [Python-es] Euler project In-Reply-To: References: Message-ID: Lo escucho de hace tiempo, pero no es el objetivo que tengo con esta idea. On Sun, Sep 2, 2018 at 8:19 PM JZA wrote: > Recomiendo escucharse el podcast de TalkPython.fm > > On Sun, Sep 2, 2018 at 8:14 PM AGTUGO wrote: > >> Hola pythoneros, >> >> Para mantenerme en forma resuelvo de vez en vez problemas de >> https://projecteuler.net, aunque ahí en los foros usan todos los >> lenguajes, sería interesante discutir un problema a la semana para ver >> estilos y métodos. Objetos, comprensión de listas, cython, numpy, >> multithreaded, pandas, etc. Aunque no sé si aquí sea el lugar indicado pero >> me encantaría que así fuera. Saludos. >> >> Arturo M. >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> > > > -- > Alexandro Colorado > Apache OpenOffice Contributor > 9060 55AB FFD2 2F02 0E1A 3409 599C 14FC 9450 D3CF > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > -- Arturo Muñoz Tolosa ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From agtugo en gmail.com Mon Sep 3 15:11:28 2018 From: agtugo en gmail.com (AGTUGO) Date: Mon, 3 Sep 2018 14:11:28 -0500 Subject: [Python-es] suma de multiplos de 3 y 5 Message-ID: """ Problema tomado de https://projecteuler.net/problem=1 If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the multiples of 3 or 5 below 1000. Si listamos todos los numeros naturales menores a 10 que son múltiplos de 3 o 5 obtenemos 2, 5, 6 y 9. La suma de los múltiplos es 23. Encuentra la suma de los múltiplos de 3 o 5 menores de 1000. """ """ Este es mi aporte de código no esta diseñado para ser eficiente, el objetivo es jugar con el lenguaje. Ojalá puedan compartir una visión interesante de como resolver este problema. Si tienen una forma más eficiente de hacer el set o más elegante también es bienvenido. Saludos. """ import itertools begin = 0 end = 1000 multiples= (3,5) x = [range(begin,end,i) for i in multiples] x = sum(set(itertools.chain(*x))) print(x) -- Arturo Muñoz Tolosa ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pych3m4 en gmail.com Tue Sep 4 06:03:55 2018 From: pych3m4 en gmail.com (Chema Cortes) Date: Tue, 4 Sep 2018 12:03:55 +0200 Subject: [Python-es] Euler project In-Reply-To: References: Message-ID: El lun., 3 sept. 2018 a las 3:14, AGTUGO () escribió: > Hola pythoneros, > > Para mantenerme en forma resuelvo de vez en vez problemas de > https://projecteuler.net, aunque ahí en los foros usan todos los > lenguajes, sería interesante discutir un problema a la semana para ver > estilos y métodos. Objetos, comprensión de listas, cython, numpy, > multithreaded, pandas, etc. Aunque no sé si aquí sea el lugar indicado pero > me encantaría que así fuera. Saludos. > > La finalidad de esta lista es hablar de cualquier cosa relacionada con python. No veo problema en poder discutir aquí las soluciones de los retos del proyecto Euler. Lo único que te pediría es que en el asunto indiques de algún modo el tema del que se trata, por ejemplo añadiendo el número del reto como EULER-001 o similar para quién prefiera ignorar estos mensajes. -- Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": https://blog.ch3m4.org Buscador Python Hispano: http://busca.ch3m4.org ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From agustinbueno en gmail.com Mon Sep 3 18:08:15 2018 From: agustinbueno en gmail.com (agus) Date: Tue, 4 Sep 2018 00:08:15 +0200 Subject: [Python-es] suma de multiplos de 3 y 5 In-Reply-To: References: Message-ID: <3d6f29dd-d395-7d39-2405-144e7bbc7af1@gmail.com> Yo lo hubiera hecho así, no se si es mejor o peor, más eficiente o menos, pero para mi es más legible. (como siempre supongo que para gustos... colores) suma = 0 for i in range(0,1000):     x = i%3     if x == 0:         suma+=i     else:         y = i%5         if y == 0:             suma+=i print(suma) El 03/09/18 a las 21:11, AGTUGO escribió: > """ > Problema tomado de > https://projecteuler.net/problem=1 > > > If we list all the natural numbers below 10 that are multiples > of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. > Find the sum of all the multiples of 3 or 5 below 1000. > > Si listamos todos los numeros naturales menores a 10 que son > múltiplos de 3 o 5 obtenemos 2, 5, 6 y 9. La suma de los múltiplos es 23. > Encuentra la suma de los múltiplos de 3 o 5 menores de 1000. > > > """ > > """ > Este es mi aporte de código no esta diseñado para ser eficiente, > el objetivo es jugar con el lenguaje. Ojalá puedan compartir > una visión interesante de como resolver este problema. > Si tienen una forma más eficiente de hacer el set o más elegante > también es bienvenido. > Saludos. > """ > > import itertools > begin = 0 > end = 1000 > multiples= (3,5) > > x = [range(begin,end,i) for i in multiples] > x = sum(set(itertools.chain(*x))) > > print(x) > > > > -- > Arturo Muñoz Tolosa > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From hectormunozh en gmail.com Tue Sep 4 04:16:11 2018 From: hectormunozh en gmail.com (=?UTF-8?Q?Hector_Mu=C3=B1oz?=) Date: Tue, 4 Sep 2018 10:16:11 +0200 Subject: [Python-es] [JOB] desarrollador Python en Agencia Tributaria Message-ID: Buenos días, Sopra Steria, presenta una de las carteras comerciales más completas del mercado: consultoría, integración de sistemas, edición de software y Business Process Services. Sopra Steria aporta una respuesta global a los retos de desarrollo y competitividad de las grandes empresas y organizaciones. Cerca de 42.000 empleados en más de 20 países, Sopra Steria realizó en 2017 una cifra de negocio de 3.800 millones de euros. En España, Sopra Steria cuenta con más de 3.600 profesionales repartidos entre 10 centros de trabajo en España. Podéis conocer más sobre la empresa en la web de la misma [1] y podéis pasaros por la sección de empleos [2] para conocer mejor qué perfiles suele buscar. Mi nombre es Héctor Muñoz y soy uno de los científicos de datos que Sopra Steria tiene en la Agencia Tributaria en el grupo de Investigación de Análisis del Fraude. Dicho grupo es completamente multidisciplinar (un matemático, una física, una informática y un informático) y es el encargado de analizar los datos de forma masiva y generar algoritmos híbridos entre Redes Complejas y Machine Learning o métodos de Estadística Multivariante con el objetivo encontrar patrones de fraude fiscal y automatizar los procesos de detección y predicción de los mismos. En los últimos meses nos hemos centrado, sobre todo, en Fraude Carrusel [3] pero en el pasado se ha trabajado con otros tipos de fraude fiscal. ¿Qué es lo que buscamos? En nuestra operativa diária los científicos de datos trabajamos, básicamente, con pequeños *scripts* en R o Python a través de los cuales realizamos nuestros análisis y creamos nuestros modelos. Debido al interés creciente del trabajo de nuestro grupo dentro de la Agencia Tributaria, es necesario cambiar la forma de trabajar que teníamos hasta ahora donde entregábamos los resultados en forma de informe a los inspectores de la Oficina Nacional de Lucha contra el Fraude (ONIF) o a la propia Unidad Central Operativa (UCO) de la Guardia Civil y migrar hacia la entrega de resultados a través del desarroyo de herramientas propias y aplicaciones de visualización de datos a partir de los scripts anteriormente mencionados y la documentación generada por el grupo de científicos de datos. Para ello, necesitamos: - un desarrollador junior con un mínimo de experiencia en *1 año en Python *(debido a que estas herramientas van a estar desarrolladas íntegramente en Python). - Debido a que parte del trabajo a desarrollar van a ser visualizaciones de datos, será valorable (que no obligatorio) algo de experiencia con HTML y alguna librería Javascript. Este punto no es ni mucho menos obligatorio pues puede aprenderse una vez la incorporación haya sido efectiva. - Algo puramente opcional pero valorable es un conocimiento mínimo de latex debido a que la documentación que generamos se hace mediante esta tecnología. Las responsabilidades del desarrollador será desarrollar dichas herramientas a partir de nuestros *scripts* y la documentación ya existente siguiendo buenas prácticas en el desarrollo creando un software testeable, mantenible y maximizando la reusabilidad de sus componentes. El rango salarial para el puesto ofertado oscila entre 28.000 y 30.000 euros bruto/año. Interesados y interesadas, por favor, contactad conmigo en el correo hectormunozh en gmail.com Saludos, Héctor. [1] http://www.soprasteria.es [2] https://www.soprasteria.es/trabaja-con-nosotros [3] https://www.diariojuridico.com/el-fraude-carrusel-en-el-iva-un-problema-todavia-sin-resolver/ ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pych3m4 en gmail.com Tue Sep 4 06:33:08 2018 From: pych3m4 en gmail.com (Chema Cortes) Date: Tue, 4 Sep 2018 12:33:08 +0200 Subject: [Python-es] suma de multiplos de 3 y 5 In-Reply-To: References: Message-ID: El lun., 3 sept. 2018 a las 21:12, AGTUGO () escribió: > """ > Problema tomado de > https://projecteuler.net/problem=1 > > > If we list all the natural numbers below 10 that are multiples > of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. > Find the sum of all the multiples of 3 or 5 below 1000. > > Si listamos todos los numeros naturales menores a 10 que son > múltiplos de 3 o 5 obtenemos 2, 5, 6 y 9. La suma de los múltiplos es 23. > Encuentra la suma de los múltiplos de 3 o 5 menores de 1000. > > > """ > > """ > Este es mi aporte de código no esta diseñado para ser eficiente, > el objetivo es jugar con el lenguaje. Ojalá puedan compartir > una visión interesante de como resolver este problema. > Si tienen una forma más eficiente de hacer el set o más elegante también > es bienvenido. > Saludos. > """ > > import itertools > begin = 0 > end = 1000 > multiples= (3,5) > > x = [range(begin,end,i) for i in multiples] > x = sum(set(itertools.chain(*x))) > > print(x) > > Con este tipo de retos, es interesante que sea lo más simple posible. En el enunciado sólo pide la suma, no es preciso guardar ninguno de los resultados intermedios. Lo más simple sería: def euler001(n: int) -> int: return sum(i for i in range(1, n) if i%3 == 0 or i%5 ==0) ... que es una forma concisa de poner lo que propone agus en otro mensaje. Una forma más efectiva, aunque muy poco "escalable" en caso de que fueran más múltiplos a considerar: def euler001(n: int) -> int: return sum(range(3, n, 3)) + sum(range(5, n, 5)) - sum(range(15, n, 15)) -- Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": https://blog.ch3m4.org Buscador Python Hispano: http://busca.ch3m4.org ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From agtugo en gmail.com Tue Sep 4 10:35:20 2018 From: agtugo en gmail.com (AGTUGO) Date: Tue, 4 Sep 2018 09:35:20 -0500 Subject: [Python-es] suma de multiplos de 3 y 5 In-Reply-To: References: Message-ID: Aquí lo único que haría para cualquier caso es sacar la comparación en una funciòn para que no este tan hardcoded from typing import List, Tuple begin = 0 end = 1000 multiples= (3,5) """ Esta función revisa si es divisible entre todos los multiplos propuestos dentro del mundo de los naturales y retorna un booleano en caso de que así sea """ def is_divisible(tb_divided:int, multiples: List[int]) -> bool: return any((tb_divided%mul == 0 for mul in multiples)) def euler001(n: int, multiples:Tuple[int]) -> int: return sum(i for i in range(1, n) if is_divisible(i,multiples)) print(euler001(end, multiples)) On Tue, Sep 4, 2018 at 5:33 AM Chema Cortes wrote: > > > El lun., 3 sept. 2018 a las 21:12, AGTUGO () escribió: > >> """ >> Problema tomado de >> https://projecteuler.net/problem=1 >> >> >> If we list all the natural numbers below 10 that are multiples >> of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. >> Find the sum of all the multiples of 3 or 5 below 1000. >> >> Si listamos todos los numeros naturales menores a 10 que son >> múltiplos de 3 o 5 obtenemos 2, 5, 6 y 9. La suma de los múltiplos es 23. >> Encuentra la suma de los múltiplos de 3 o 5 menores de 1000. >> >> >> """ >> >> """ >> Este es mi aporte de código no esta diseñado para ser eficiente, >> el objetivo es jugar con el lenguaje. Ojalá puedan compartir >> una visión interesante de como resolver este problema. >> Si tienen una forma más eficiente de hacer el set o más elegante también >> es bienvenido. >> Saludos. >> """ >> >> import itertools >> begin = 0 >> end = 1000 >> multiples= (3,5) >> >> x = [range(begin,end,i) for i in multiples] >> x = sum(set(itertools.chain(*x))) >> >> print(x) >> >> > Con este tipo de retos, es interesante que sea lo más simple posible. En > el enunciado sólo pide la suma, no es preciso guardar ninguno de los > resultados intermedios. > > Lo más simple sería: > > def euler001(n: int) -> int: > return sum(i for i in range(1, n) if i%3 == 0 or i%5 ==0) > > ... que es una forma concisa de poner lo que propone agus en otro mensaje. > > Una forma más efectiva, aunque muy poco "escalable" en caso de que fueran > más múltiplos a considerar: > > def euler001(n: int) -> int: > return sum(range(3, n, 3)) + sum(range(5, n, 5)) - sum(range(15, n, > 15)) > > > -- > Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": > https://blog.ch3m4.org > Buscador Python Hispano: http://busca.ch3m4.org > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > -- Arturo Muñoz Tolosa ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From agtugo en gmail.com Tue Sep 4 23:10:59 2018 From: agtugo en gmail.com (AGTUGO) Date: Tue, 4 Sep 2018 22:10:59 -0500 Subject: [Python-es] suma de multiplos de 3 y 5 In-Reply-To: References: Message-ID: Adicionalmente me gusta verlo como conjuntos A union B. def euler001_with_sets(n: int, multiples:Tuple[int]) -> int: union_set = set() all_sums_set = (set(range(0,n,mul)) for mul in multiples) union_set = union_set.union(*all_sums_set) return sum(union_set) On Tue, Sep 4, 2018 at 9:35 AM AGTUGO wrote: > Aquí lo único que haría para cualquier caso es sacar la comparación en una > funciòn para que no este tan hardcoded > > from typing import List, Tuple > > begin = 0 > end = 1000 > multiples= (3,5) > > """ > Esta función revisa si es divisible entre todos los multiplos propuestos > dentro del mundo > de los naturales y retorna un booleano en caso de que así sea > """ > def is_divisible(tb_divided:int, multiples: List[int]) -> bool: > return any((tb_divided%mul == 0 for mul in multiples)) > > def euler001(n: int, multiples:Tuple[int]) -> int: > return sum(i for i in range(1, n) if is_divisible(i,multiples)) > > print(euler001(end, multiples)) > > > > On Tue, Sep 4, 2018 at 5:33 AM Chema Cortes wrote: > >> >> >> El lun., 3 sept. 2018 a las 21:12, AGTUGO () escribió: >> >>> """ >>> Problema tomado de >>> https://projecteuler.net/problem=1 >>> >>> >>> If we list all the natural numbers below 10 that are multiples >>> of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. >>> Find the sum of all the multiples of 3 or 5 below 1000. >>> >>> Si listamos todos los numeros naturales menores a 10 que son >>> múltiplos de 3 o 5 obtenemos 2, 5, 6 y 9. La suma de los múltiplos es 23. >>> Encuentra la suma de los múltiplos de 3 o 5 menores de 1000. >>> >>> >>> """ >>> >>> """ >>> Este es mi aporte de código no esta diseñado para ser eficiente, >>> el objetivo es jugar con el lenguaje. Ojalá puedan compartir >>> una visión interesante de como resolver este problema. >>> Si tienen una forma más eficiente de hacer el set o más elegante también >>> es bienvenido. >>> Saludos. >>> """ >>> >>> import itertools >>> begin = 0 >>> end = 1000 >>> multiples= (3,5) >>> >>> x = [range(begin,end,i) for i in multiples] >>> x = sum(set(itertools.chain(*x))) >>> >>> print(x) >>> >>> >> Con este tipo de retos, es interesante que sea lo más simple posible. En >> el enunciado sólo pide la suma, no es preciso guardar ninguno de los >> resultados intermedios. >> >> Lo más simple sería: >> >> def euler001(n: int) -> int: >> return sum(i for i in range(1, n) if i%3 == 0 or i%5 ==0) >> >> ... que es una forma concisa de poner lo que propone agus en otro mensaje. >> >> Una forma más efectiva, aunque muy poco "escalable" en caso de que fueran >> más múltiplos a considerar: >> >> def euler001(n: int) -> int: >> return sum(range(3, n, 3)) + sum(range(5, n, 5)) - sum(range(15, n, >> 15)) >> >> >> -- >> Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": >> https://blog.ch3m4.org >> Buscador Python Hispano: http://busca.ch3m4.org >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> > > > -- > Arturo Muñoz Tolosa > -- Arturo Muñoz Tolosa ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From agtugo en gmail.com Wed Sep 5 00:51:15 2018 From: agtugo en gmail.com (AGTUGO) Date: Tue, 4 Sep 2018 23:51:15 -0500 Subject: [Python-es] suma de multiplos de 3 y 5 In-Reply-To: References: Message-ID: Después de ver los tiempos de ejecución obviamente aquellos métodos que hicieron un for pues fueron más lentos, los que generaron los números para ser sumados pues son los más rápidos, lo cual no es ninguna sorpresa. Creo que la mayoría de la gente no busca velocidad en python pero hay casos donde optimizaciones pequeñas hacen la diferencia, al final creo que lo mejor para optimizar pues es escribir en c o en cython algunas funciones en particular. Creo que mucho más fácil de mantener en cython. Prepararé una comparación de todos los métodos aquí expuestos en cPython, pypy, adicionalmente numoy y cython, para cerrar esta discusión y tratar de llegar a algo que pueda ser referenciado en el futuro. On Tue, Sep 4, 2018 at 10:10 PM AGTUGO wrote: > Adicionalmente me gusta verlo como conjuntos A union B. > > def euler001_with_sets(n: int, multiples:Tuple[int]) -> int: > union_set = set() > all_sums_set = (set(range(0,n,mul)) for mul in multiples) > union_set = union_set.union(*all_sums_set) > return sum(union_set) > > > > On Tue, Sep 4, 2018 at 9:35 AM AGTUGO wrote: > >> Aquí lo único que haría para cualquier caso es sacar la comparación en >> una funciòn para que no este tan hardcoded >> >> from typing import List, Tuple >> >> begin = 0 >> end = 1000 >> multiples= (3,5) >> >> """ >> Esta función revisa si es divisible entre todos los multiplos propuestos >> dentro del mundo >> de los naturales y retorna un booleano en caso de que así sea >> """ >> def is_divisible(tb_divided:int, multiples: List[int]) -> bool: >> return any((tb_divided%mul == 0 for mul in multiples)) >> >> def euler001(n: int, multiples:Tuple[int]) -> int: >> return sum(i for i in range(1, n) if is_divisible(i,multiples)) >> >> print(euler001(end, multiples)) >> >> >> >> On Tue, Sep 4, 2018 at 5:33 AM Chema Cortes wrote: >> >>> >>> >>> El lun., 3 sept. 2018 a las 21:12, AGTUGO () escribió: >>> >>>> """ >>>> Problema tomado de >>>> https://projecteuler.net/problem=1 >>>> >>>> >>>> If we list all the natural numbers below 10 that are multiples >>>> of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. >>>> Find the sum of all the multiples of 3 or 5 below 1000. >>>> >>>> Si listamos todos los numeros naturales menores a 10 que son >>>> múltiplos de 3 o 5 obtenemos 2, 5, 6 y 9. La suma de los múltiplos es >>>> 23. >>>> Encuentra la suma de los múltiplos de 3 o 5 menores de 1000. >>>> >>>> >>>> """ >>>> >>>> """ >>>> Este es mi aporte de código no esta diseñado para ser eficiente, >>>> el objetivo es jugar con el lenguaje. Ojalá puedan compartir >>>> una visión interesante de como resolver este problema. >>>> Si tienen una forma más eficiente de hacer el set o más elegante >>>> también es bienvenido. >>>> Saludos. >>>> """ >>>> >>>> import itertools >>>> begin = 0 >>>> end = 1000 >>>> multiples= (3,5) >>>> >>>> x = [range(begin,end,i) for i in multiples] >>>> x = sum(set(itertools.chain(*x))) >>>> >>>> print(x) >>>> >>>> >>> Con este tipo de retos, es interesante que sea lo más simple posible. En >>> el enunciado sólo pide la suma, no es preciso guardar ninguno de los >>> resultados intermedios. >>> >>> Lo más simple sería: >>> >>> def euler001(n: int) -> int: >>> return sum(i for i in range(1, n) if i%3 == 0 or i%5 ==0) >>> >>> ... que es una forma concisa de poner lo que propone agus en otro >>> mensaje. >>> >>> Una forma más efectiva, aunque muy poco "escalable" en caso de que >>> fueran más múltiplos a considerar: >>> >>> def euler001(n: int) -> int: >>> return sum(range(3, n, 3)) + sum(range(5, n, 5)) - sum(range(15, n, >>> 15)) >>> >>> >>> -- >>> Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": >>> https://blog.ch3m4.org >>> Buscador Python Hispano: http://busca.ch3m4.org >>> >>> _______________________________________________ >>> Python-es mailing list >>> Python-es en python.org >>> https://mail.python.org/mailman/listinfo/python-es >>> >> >> >> -- >> Arturo Muñoz Tolosa >> > > > -- > Arturo Muñoz Tolosa > -- Arturo Muñoz Tolosa ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From fdanesse en gmail.com Tue Sep 4 19:10:35 2018 From: fdanesse en gmail.com (Flavio Danesse) Date: Tue, 4 Sep 2018 20:10:35 -0300 Subject: [Python-es] python_joven Message-ID: Hola lista. Hace tiempo que estoy en la lista aunque no escribo mucho. Soy de Uruguay y desde 2009 llevo adelante un proyecto en python que me gustaría que conozcan. Nunca publiqué esto aquí porque pensé que era una lista más que nada técnica pero hoy vi un mail de chema Cortes que dice que la lista es para cualquier cosa relacionada con python, así que me gustaría que se hicieran un tiempo para informarse sobre nosotros. Les dejo el link a nuestra página: https://pythonjoven-c1888.firebaseapp.com/home [image: 1.jpg] Mi sitio personal: https://fdanesse-f2b2c.firebaseapp.com/home ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: 1.jpg Type: image/jpeg Size: 322708 bytes Desc: no disponible URL: From hectormunozh en gmail.com Wed Sep 5 04:40:53 2018 From: hectormunozh en gmail.com (=?UTF-8?Q?Hector_Mu=C3=B1oz?=) Date: Wed, 5 Sep 2018 10:40:53 +0200 Subject: [Python-es] suma de multiplos de 3 y 5 In-Reply-To: References: Message-ID: Creo que para solucionar este problema no es necesario ningún bucle. Esta es la solución más simple que he podido encontrar: from __future__ import division def sumar_multiplos_k(a1, an,d): n = an/d S = ((a1+an)/2)*n return S print(sumar_multiplos_k(3,999,3)+sumar_multiplos_k(5,995,5)-sumar_multiplos_k(15,990,15)) El razonamiento es el siguiente: Viendo la naturaleza del problema, tiene una pinta de progresión aritmética que echa para atrás. Al final es encontrar la suma de los múltiplos de 3 o de 5, es decir, suma de series cuyos elementos están separados entre tres o cinco unidades, es decir, con razón 3 o 5. La expresión de la progresión aritmética es: ((a1+an)/2)*n donde a1 es el primer elemento de la serie, an es el último elemento de la serie y n el número total de elementos. En esta expresión lo único que podemos desconocer es n, el número total de elementos, pero si vamos a la expresión general de la progresión podemos decir que an = a1+(n-1)d donde a1 es el primer elemento, n el número total de elementos y d la razón de la serie, es decir el número que debemos sumar al elemento anterior para conseguir el próximo elemento. De la expresión anterior tenemos todos los parámetros excepto n así que se convierte es simplificar y resolver una ecuación de primer grado. El "quid" de la cuestión, creo yo, es en darse cuenta de lo siguiente: Álgunos múltiplos de 3: 3,6,9,12,15,...,27,30,33,...,42,45,... Algunos múltiplos de 5: 5,10,15,20,25,30,35,40,45,... Si observamos 15,30,45 se repiten en ambas series por lo que si sumasemos ambas progresiones estaríamos sumando los múltiplos de 15 dos veces. Por lo que a la suma de la progresión de 3 y la progresión de 5 hay que restarle la progresión de 15. Y ese sería el resultado. No he encontrado una forma más óptima de hacerlo, de esta forma nos quitamos de encima los bucles y no hay que buscar optimizaciones con cython ni nada parecido. Saludos! On Wed, 5 Sep 2018 at 06:55, AGTUGO wrote: > > Después de ver los tiempos de ejecución obviamente aquellos métodos que hicieron un for pues fueron más lentos, los que generaron los números para ser sumados pues son los más rápidos, lo cual no es ninguna sorpresa. Creo que la mayoría de la gente no busca velocidad en python pero hay casos donde optimizaciones pequeñas hacen la diferencia, al final creo que lo mejor para optimizar pues es escribir en c o en cython algunas funciones en particular. Creo que mucho más fácil de mantener en cython. Prepararé una comparación de todos los métodos aquí expuestos en cPython, pypy, adicionalmente numoy y cython, para cerrar esta discusión y tratar de llegar a algo que pueda ser referenciado en el futuro. > > On Tue, Sep 4, 2018 at 10:10 PM AGTUGO wrote: >> >> Adicionalmente me gusta verlo como conjuntos A union B. >> >> def euler001_with_sets(n: int, multiples:Tuple[int]) -> int: >> union_set = set() >> all_sums_set = (set(range(0,n,mul)) for mul in multiples) >> union_set = union_set.union(*all_sums_set) >> return sum(union_set) >> >> >> >> On Tue, Sep 4, 2018 at 9:35 AM AGTUGO wrote: >>> >>> Aquí lo único que haría para cualquier caso es sacar la comparación en una funciòn para que no este tan hardcoded >>> >>> from typing import List, Tuple >>> >>> begin = 0 >>> end = 1000 >>> multiples= (3,5) >>> >>> """ >>> Esta función revisa si es divisible entre todos los multiplos propuestos dentro del mundo >>> de los naturales y retorna un booleano en caso de que así sea >>> """ >>> def is_divisible(tb_divided:int, multiples: List[int]) -> bool: >>> return any((tb_divided%mul == 0 for mul in multiples)) >>> >>> def euler001(n: int, multiples:Tuple[int]) -> int: >>> return sum(i for i in range(1, n) if is_divisible(i,multiples)) >>> >>> print(euler001(end, multiples)) >>> >>> >>> >>> On Tue, Sep 4, 2018 at 5:33 AM Chema Cortes wrote: >>>> >>>> >>>> >>>> El lun., 3 sept. 2018 a las 21:12, AGTUGO () escribió: >>>>> >>>>> """ >>>>> Problema tomado de >>>>> https://projecteuler.net/problem=1 >>>>> >>>>> >>>>> If we list all the natural numbers below 10 that are multiples >>>>> of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. >>>>> Find the sum of all the multiples of 3 or 5 below 1000. >>>>> >>>>> Si listamos todos los numeros naturales menores a 10 que son >>>>> múltiplos de 3 o 5 obtenemos 2, 5, 6 y 9. La suma de los múltiplos es 23. >>>>> Encuentra la suma de los múltiplos de 3 o 5 menores de 1000. >>>>> >>>>> >>>>> """ >>>>> >>>>> """ >>>>> Este es mi aporte de código no esta diseñado para ser eficiente, >>>>> el objetivo es jugar con el lenguaje. Ojalá puedan compartir >>>>> una visión interesante de como resolver este problema. >>>>> Si tienen una forma más eficiente de hacer el set o más elegante también es bienvenido. >>>>> Saludos. >>>>> """ >>>>> >>>>> import itertools >>>>> begin = 0 >>>>> end = 1000 >>>>> multiples= (3,5) >>>>> >>>>> x = [range(begin,end,i) for i in multiples] >>>>> x = sum(set(itertools.chain(*x))) >>>>> >>>>> print(x) >>>>> >>>> >>>> Con este tipo de retos, es interesante que sea lo más simple posible. En el enunciado sólo pide la suma, no es preciso guardar ninguno de los resultados intermedios. >>>> >>>> Lo más simple sería: >>>> >>>> def euler001(n: int) -> int: >>>> return sum(i for i in range(1, n) if i%3 == 0 or i%5 ==0) >>>> >>>> ... que es una forma concisa de poner lo que propone agus en otro mensaje. >>>> >>>> Una forma más efectiva, aunque muy poco "escalable" en caso de que fueran más múltiplos a considerar: >>>> >>>> def euler001(n: int) -> int: >>>> return sum(range(3, n, 3)) + sum(range(5, n, 5)) - sum(range(15, n, 15)) >>>> >>>> >>>> -- >>>> Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": https://blog.ch3m4.org >>>> Buscador Python Hispano: http://busca.ch3m4.org >>>> _______________________________________________ >>>> Python-es mailing list >>>> Python-es en python.org >>>> https://mail.python.org/mailman/listinfo/python-es >>> >>> >>> >>> -- >>> Arturo Muñoz Tolosa >> >> >> >> -- >> Arturo Muñoz Tolosa > > > > -- > Arturo Muñoz Tolosa > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es From agtugo en gmail.com Wed Sep 5 14:22:42 2018 From: agtugo en gmail.com (AGTUGO) Date: Wed, 5 Sep 2018 13:22:42 -0500 Subject: [Python-es] suma de multiplos de 3 y 5 In-Reply-To: References: Message-ID: Claro están siempre las ecuaciones de sumatorias, el mejor método para este caso, de hecho en euler lo comentan hasta el cansancio, en mi caso prefiero buscar una soluciòn más del mundo del algoritmo que de las matematicas para jugar con el lenguaje. Seguiré la idea de cython ya que me parece interesante comparar. Claro podemos poner un problema después que solamente se pueda resolver solamente con aproximaciones numéricas. El objetivo es poder observar los diferentes mètodos para atacar el problema, en este caso ya me había sorprendido que nadie lo hubiera sacado al tema. Saludos. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From kelertxiki en gmail.com Fri Sep 7 02:24:21 2018 From: kelertxiki en gmail.com (Ander Garmendia) Date: Fri, 7 Sep 2018 08:24:21 +0200 Subject: [Python-es] PySS el 12 de Octubre en Donostia-San Sebastian Message-ID: Buenas, Ya que hay actividad en la lista y ningún organizador ha posteado por aquí, les dejo el link de PySS: http://pyss18.pyss.org En esta edición cumplen 5 años y cambian de ubicación. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From geistein en gmail.com Thu Sep 13 15:11:01 2018 From: geistein en gmail.com (GEIS AUGUSTO GARCIA ROMERO) Date: Thu, 13 Sep 2018 14:11:01 -0500 Subject: [Python-es] ayuda Message-ID: Muy Buenas Listeros PY por favor pueden colaborarme con esto. UnicodeEncodeError: 'ascii' codec can't encode character '\xed' in position 501: ordinal not in range(128) Gracias. -- "Es mejor luchar y haber perdido que quedarse con la duda de lo que pudo haber sido." Geis. Ingeniero en Sistemas y Tecnologo en Electronica e Instrumentacion ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pych3m4 en gmail.com Fri Sep 14 03:40:28 2018 From: pych3m4 en gmail.com (Chema Cortes) Date: Fri, 14 Sep 2018 09:40:28 +0200 Subject: [Python-es] ayuda In-Reply-To: References: Message-ID: El jue., 13 sept. 2018 a las 21:11, GEIS AUGUSTO GARCIA ROMERO (< geistein en gmail.com>) escribió: > Muy Buenas Listeros PY por favor pueden colaborarme con esto. > > UnicodeEncodeError: 'ascii' codec can't encode character '\xed' in > position 501: ordinal not in range(128) > Hola, Geis: Con lo poco que cuentas sólo podemos decirte que es un error con la codificación de caracteres. Añade algo del código y, sobre todo, la versión de python usas. -- Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": https://blog.ch3m4.org Buscador Python Hispano: http://busca.ch3m4.org ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From gvm2121 en gmail.com Fri Sep 14 10:08:51 2018 From: gvm2121 en gmail.com (Gonzalo V) Date: Fri, 14 Sep 2018 11:08:51 -0300 Subject: [Python-es] ayuda In-Reply-To: References: Message-ID: si viene de windows, el uso de utf-8-sig me ha funcionado. El vie., 14 de sept. de 2018 4:41 AM, Chema Cortes escribió: > > > El jue., 13 sept. 2018 a las 21:11, GEIS AUGUSTO GARCIA ROMERO (< > geistein en gmail.com>) escribió: > >> Muy Buenas Listeros PY por favor pueden colaborarme con esto. >> >> UnicodeEncodeError: 'ascii' codec can't encode character '\xed' in >> position 501: ordinal not in range(128) >> > > Hola, Geis: > > Con lo poco que cuentas sólo podemos decirte que es un error con la > codificación de caracteres. Añade algo del código y, sobre todo, la versión > de python usas. > > > -- > Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": > https://blog.ch3m4.org > Buscador Python Hispano: http://busca.ch3m4.org > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jcaballero.hep en gmail.com Mon Sep 17 17:14:16 2018 From: jcaballero.hep en gmail.com (Jose Caballero) Date: Mon, 17 Sep 2018 17:14:16 -0400 Subject: [Python-es] implementacion del metodo dict.get() Message-ID: Hola alguien tiene por casualidad un link, o referencia a fichero y linea, donde esta la implementacion del metodo get() de los diccionarios? Tengo curiosidad por ver como esta implementado, pero no me aclaro con el codigo fuente. Hace ya demasiados agnos que no toco C :( Muchas gracias. Y perdon por la ausencia de tildes. Saludos, Jose From pych3m4 en gmail.com Mon Sep 17 20:30:49 2018 From: pych3m4 en gmail.com (Chema Cortes) Date: Tue, 18 Sep 2018 02:30:49 +0200 Subject: [Python-es] implementacion del metodo dict.get() In-Reply-To: References: Message-ID: https://github.com/python/cpython/blob/dbdee0073cf0b88fe541980ace1f650900f455cc/Objects/dictobject.c#L2743-L2775 El lun., 17 sept. 2018 a las 23:15, Jose Caballero (< jcaballero.hep en gmail.com>) escribió: > Hola > > alguien tiene por casualidad un link, o referencia a fichero y linea, > donde esta la implementacion del metodo get() de los diccionarios? > Tengo curiosidad por ver como esta implementado, pero no me aclaro con > el codigo fuente. Hace ya demasiados agnos que no toco C > :( > > > Muchas gracias. Y perdon por la ausencia de tildes. > Saludos, > Jose > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > -- Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": https://blog.ch3m4.org Buscador Python Hispano: http://busca.ch3m4.org ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jcaballero.hep en gmail.com Mon Sep 17 21:14:07 2018 From: jcaballero.hep en gmail.com (Jose Caballero) Date: Mon, 17 Sep 2018 21:14:07 -0400 Subject: [Python-es] implementacion del metodo dict.get() In-Reply-To: References: Message-ID: Muchas gracias !! El día 17 de septiembre de 2018, 20:30, Chema Cortes escribió: > https://github.com/python/cpython/blob/dbdee0073cf0b88fe541980ace1f650900f455cc/Objects/dictobject.c#L2743-L2775 > > > El lun., 17 sept. 2018 a las 23:15, Jose Caballero > () escribió: >> >> Hola >> >> alguien tiene por casualidad un link, o referencia a fichero y linea, >> donde esta la implementacion del metodo get() de los diccionarios? >> Tengo curiosidad por ver como esta implementado, pero no me aclaro con >> el codigo fuente. Hace ya demasiados agnos que no toco C >> :( >> >> >> Muchas gracias. Y perdon por la ausencia de tildes. >> Saludos, >> Jose >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es > > > > -- > Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": > https://blog.ch3m4.org > Buscador Python Hispano: http://busca.ch3m4.org > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > From tres.14159 en gmail.com Mon Sep 24 10:30:14 2018 From: tres.14159 en gmail.com (Miguel de Dios Matias) Date: Mon, 24 Sep 2018 16:30:14 +0200 Subject: [Python-es] =?utf-8?q?=C2=BFpexpect_se_puede_capturar_la_salida_?= =?utf-8?q?de_un_ejecutable_con_ncurses=3F_=C2=BFY_enviar_las_pulsa?= =?utf-8?q?ciones_de_teclado=3F?= Message-ID: Buenas. Ando pegándome en intentar "encapsular" un ejecutable (un viejo roguelike) que saca la salida en ncurses y se interacciona con pulsaciones de teclado. Me he hecho un script sencillo en ncurses para probar (este espera la pulsación y muestra la tecla pulsada y si es q se sale). ---- import sys,os import curses def draw_menu(stdscr): k = 0 while (k != ord('q')): stdscr.clear() height, width = stdscr.getmaxyx() stdscr.addstr(0, 0, "HOLA {}".format(k)) stdscr.refresh() k = stdscr.getch() def main(): curses.wrapper(draw_menu) if __name__ == "__main__": main() ---- Y he probado con popen, pexpect y me falta sacrificar una cabra...no lo saco, aquí mis intentos infructuosos: ---- """ ps -A | grep cata xdotool search --pid 3819 xdotool key --window 50331670 q """ """ from subprocess import Popen, PIPE #p = Popen('./test5.py', stdin=PIPE, stdout=PIPE, shell=True) #p = Popen('./test5.py', shell=True) p = Popen('./test2.py') print(p.pid) sleep(100) # p.stdin.close() # p.stdout.close() # p.wait() """ # ~ import pexpect # ~ child = pexpect.spawn("./test5.py") # ~ child.send('a') # ~ child.send('b') # ~ child.interact() # ~ import sys # ~ import pexpect # ~ child = pexpect.spawn('./test5.py', logfile=open("/tmp/file", "wb")) # ~ child.logfile = open("/tmp/file", "wb") # ~ child.expect(pexpect.EOF) # ~ child.send('a') # ~ child.send('q') # ~ child.interact() """ https://stackoverflow.com/questions/2575528/simulating-key-press-event-using-python-for-linux spawn fout = file('output.txt', 'w') child.logfile = fout """ import sys from time import sleep import pexpect child = pexpect.spawn('./test5.py') child.logfile = open("/tmp/file", "wb") sleep(2) child.send('a') print(child.read()) # ~ child.send('q') ---- Por si alguien le interesa el karma en stackoverflow, tengo la misma pregunta por allí, si contesta le voto positivo: https://stackoverflow.com/questions/52377179/open-a-process-and-catch-stdout-and-send-custom-keypress Y también por si alguno le ha picado la curiosidad tengo también un mensaje en el foro de referencia de videojuegos libres: https://forum.freegamedev.net/viewtopic.php?f=3&t=8113&sid=47af7f6dfc9848160f9ca27791a045f1 Saludos. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pych3m4 en gmail.com Tue Sep 25 12:42:44 2018 From: pych3m4 en gmail.com (Chema Cortes) Date: Tue, 25 Sep 2018 18:42:44 +0200 Subject: [Python-es] =?utf-8?q?=C2=BFpexpect_se_puede_capturar_la_salida_?= =?utf-8?q?de_un_ejecutable_con_ncurses=3F_=C2=BFY_enviar_las_pulsa?= =?utf-8?q?ciones_de_teclado=3F?= In-Reply-To: References: Message-ID: El lun., 24 sept. 2018 a las 16:30, Miguel de Dios Matias (< tres.14159 en gmail.com>) escribió: > Buenas. > > Ando pegándome en intentar "encapsular" un ejecutable (un viejo roguelike) > que saca la salida en ncurses y se interacciona con pulsaciones de teclado. > > Me he hecho un script sencillo en ncurses para probar (este espera la > pulsación y muestra la tecla pulsada y si es q se sale). > ¿Exactamente, qué esperabas que hiciera? Las entradas y salidas estándar funcionan con buffers, no son adecuadas para programas interactivos. De alguna forma tendrás que exponer el interface curses de la aplicación para que sea accesible por tu script de testing. > > ---- > import sys,os > import curses > > def draw_menu(stdscr): > k = 0 > while (k != ord('q')): > stdscr.clear() > height, width = stdscr.getmaxyx() > stdscr.addstr(0, 0, "HOLA {}".format(k)) > stdscr.refresh() > > k = stdscr.getch() > > def main(): > curses.wrapper(draw_menu) > > if __name__ == "__main__": > main() > ---- > > Y he probado con popen, pexpect y me falta sacrificar una cabra...no lo > saco, aquí mis intentos infructuosos: > > ---- > > """ > ps -A | grep cata > xdotool search --pid 3819 > xdotool key --window 50331670 q > """ > > """ > from subprocess import Popen, PIPE > > #p = Popen('./test5.py', stdin=PIPE, stdout=PIPE, shell=True) > #p = Popen('./test5.py', shell=True) > p = Popen('./test2.py') > > print(p.pid) > > sleep(100) > > # p.stdin.close() > # p.stdout.close() > # p.wait() > > """ > > > # ~ import pexpect > > # ~ child = pexpect.spawn("./test5.py") > # ~ child.send('a') > # ~ child.send('b') > # ~ child.interact() > > > # ~ import sys > # ~ import pexpect > # ~ child = pexpect.spawn('./test5.py', logfile=open("/tmp/file", "wb")) > # ~ child.logfile = open("/tmp/file", "wb") > # ~ child.expect(pexpect.EOF) > # ~ child.send('a') > # ~ child.send('q') > # ~ child.interact() > > """ > > https://stackoverflow.com/questions/2575528/simulating-key-press-event-using-python-for-linux > spawn > fout = file('output.txt', 'w') child.logfile = fout > """ > > import sys > from time import sleep > import pexpect > child = pexpect.spawn('./test5.py') > child.logfile = open("/tmp/file", "wb") > sleep(2) > child.send('a') > print(child.read()) > # ~ child.send('q') > ---- > > Por si alguien le interesa el karma en stackoverflow, tengo la misma > pregunta por allí, si contesta le voto positivo: > > > https://stackoverflow.com/questions/52377179/open-a-process-and-catch-stdout-and-send-custom-keypress > > Y también por si alguno le ha picado la curiosidad tengo también un > mensaje en el foro de referencia de videojuegos libres: > > > https://forum.freegamedev.net/viewtopic.php?f=3&t=8113&sid=47af7f6dfc9848160f9ca27791a045f1 > > Saludos. > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > -- Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": https://blog.ch3m4.org Buscador Python Hispano: http://busca.ch3m4.org ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From tres.14159 en gmail.com Wed Sep 26 20:56:14 2018 From: tres.14159 en gmail.com (Miguel de Dios Matias) Date: Thu, 27 Sep 2018 02:56:14 +0200 Subject: [Python-es] =?utf-8?q?=C2=BFpexpect_se_puede_capturar_la_salida_?= =?utf-8?q?de_un_ejecutable_con_ncurses=3F_=C2=BFY_enviar_las_pulsa?= =?utf-8?q?ciones_de_teclado=3F?= In-Reply-To: References: Message-ID: Buenas. Ahora ando intentandolo otra vez con popen, mas o menos no consigo leer pero me falla el envió de datos por stdin. Saludos. El mar., 25 sept. 2018 a las 18:44, Chema Cortes () escribió: > > > El lun., 24 sept. 2018 a las 16:30, Miguel de Dios Matias (< > tres.14159 en gmail.com>) escribió: > >> Buenas. >> >> Ando pegándome en intentar "encapsular" un ejecutable (un viejo >> roguelike) que saca la salida en ncurses y se interacciona con pulsaciones >> de teclado. >> >> Me he hecho un script sencillo en ncurses para probar (este espera la >> pulsación y muestra la tecla pulsada y si es q se sale). >> > > ¿Exactamente, qué esperabas que hiciera? Las entradas y salidas estándar > funcionan con buffers, no son adecuadas para programas interactivos. > > De alguna forma tendrás que exponer el interface curses de la aplicación > para que sea accesible por tu script de testing. > > >> >> ---- >> import sys,os >> import curses >> >> def draw_menu(stdscr): >> k = 0 >> while (k != ord('q')): >> stdscr.clear() >> height, width = stdscr.getmaxyx() >> stdscr.addstr(0, 0, "HOLA {}".format(k)) >> stdscr.refresh() >> >> k = stdscr.getch() >> >> def main(): >> curses.wrapper(draw_menu) >> >> if __name__ == "__main__": >> main() >> ---- >> >> Y he probado con popen, pexpect y me falta sacrificar una cabra...no lo >> saco, aquí mis intentos infructuosos: >> >> ---- >> >> """ >> ps -A | grep cata >> xdotool search --pid 3819 >> xdotool key --window 50331670 q >> """ >> >> """ >> from subprocess import Popen, PIPE >> >> #p = Popen('./test5.py', stdin=PIPE, stdout=PIPE, shell=True) >> #p = Popen('./test5.py', shell=True) >> p = Popen('./test2.py') >> >> print(p.pid) >> >> sleep(100) >> >> # p.stdin.close() >> # p.stdout.close() >> # p.wait() >> >> """ >> >> >> # ~ import pexpect >> >> # ~ child = pexpect.spawn("./test5.py") >> # ~ child.send('a') >> # ~ child.send('b') >> # ~ child.interact() >> >> >> # ~ import sys >> # ~ import pexpect >> # ~ child = pexpect.spawn('./test5.py', logfile=open("/tmp/file", "wb")) >> # ~ child.logfile = open("/tmp/file", "wb") >> # ~ child.expect(pexpect.EOF) >> # ~ child.send('a') >> # ~ child.send('q') >> # ~ child.interact() >> >> """ >> >> https://stackoverflow.com/questions/2575528/simulating-key-press-event-using-python-for-linux >> spawn >> fout = file('output.txt', 'w') child.logfile = fout >> """ >> >> import sys >> from time import sleep >> import pexpect >> child = pexpect.spawn('./test5.py') >> child.logfile = open("/tmp/file", "wb") >> sleep(2) >> child.send('a') >> print(child.read()) >> # ~ child.send('q') >> ---- >> >> Por si alguien le interesa el karma en stackoverflow, tengo la misma >> pregunta por allí, si contesta le voto positivo: >> >> >> https://stackoverflow.com/questions/52377179/open-a-process-and-catch-stdout-and-send-custom-keypress >> >> Y también por si alguno le ha picado la curiosidad tengo también un >> mensaje en el foro de referencia de videojuegos libres: >> >> >> https://forum.freegamedev.net/viewtopic.php?f=3&t=8113&sid=47af7f6dfc9848160f9ca27791a045f1 >> >> Saludos. >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> > > > -- > Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": > https://blog.ch3m4.org > Buscador Python Hispano: http://busca.ch3m4.org > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jcaballero.hep en gmail.com Thu Sep 27 17:18:38 2018 From: jcaballero.hep en gmail.com (Jose Caballero) Date: Thu, 27 Sep 2018 17:18:38 -0400 Subject: [Python-es] convertir timestamp a segundos desde el Epoch Message-ID: Hola, me he perdido en el zoo de clases y metodos de las librarias time, datetime, calendar... Mientras sigo investigando, si alguien me puede echar una mano y ahorrarme tiempo, estare eternamente agradecido. Tengo un timestamp con este formato "2018-09-23T10:05:30", y se que es en UTC. Necesito convertirlo a segundos desde el Epoch. Ya se que si hago lo siguiente d = datetime.datetime(2018, 9, 23, 10, 5, 30) calendar.timegm(d.timetuple()) me da el resultado correcto. Pero me obliga a extraer los valores numericos de la cadena. ?Puedo crear el objeto datetime.datetime() pasando la cadena original y el formato, al estilo strptime()? Muchas gracias por adelantado. Perdon por la ausencia de tildes. Jose From ricardo.cardenes en gmail.com Thu Sep 27 17:22:26 2018 From: ricardo.cardenes en gmail.com (=?UTF-8?Q?Ricardo_C=C3=A1rdenes?=) Date: Thu, 27 Sep 2018 11:22:26 -1000 Subject: [Python-es] convertir timestamp a segundos desde el Epoch In-Reply-To: References: Message-ID: datetime tiene su propio strptime: >>> datetime.strptime(s, "%Y-%m-%dT%H:%M:%S") datetime.datetime(2018, 9, 23, 10, 5, 30) Saludos On Thu, Sep 27, 2018 at 11:19 AM Jose Caballero wrote: > Hola, > > > me he perdido en el zoo de clases y metodos de las librarias time, > datetime, calendar... > Mientras sigo investigando, si alguien me puede echar una mano y > ahorrarme tiempo, estare eternamente agradecido. > > Tengo un timestamp con este formato "2018-09-23T10:05:30", y se que es en > UTC. > Necesito convertirlo a segundos desde el Epoch. > > Ya se que si hago lo siguiente > > d = datetime.datetime(2018, 9, 23, 10, 5, 30) > calendar.timegm(d.timetuple()) > > me da el resultado correcto. > Pero me obliga a extraer los valores numericos de la cadena. > > ?Puedo crear el objeto datetime.datetime() pasando la cadena original > y el formato, al estilo strptime()? > > > > Muchas gracias por adelantado. > Perdon por la ausencia de tildes. > > Jose > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jcaballero.hep en gmail.com Thu Sep 27 17:26:39 2018 From: jcaballero.hep en gmail.com (Jose Caballero) Date: Thu, 27 Sep 2018 17:26:39 -0400 Subject: [Python-es] convertir timestamp a segundos desde el Epoch In-Reply-To: References: Message-ID: ah! Estupendo. Entonces deberia poder hacer t = datetime.datetime.strptime( , ) calendar.timegm(t.timetuple()) Voy a probarlo. Muchas gracias !! El día 27 de septiembre de 2018, 17:22, Ricardo Cárdenes escribió: > datetime tiene su propio strptime: > > >>> datetime.strptime(s, "%Y-%m-%dT%H:%M:%S") > datetime.datetime(2018, 9, 23, 10, 5, 30) > > Saludos > > On Thu, Sep 27, 2018 at 11:19 AM Jose Caballero > wrote: >> >> Hola, >> >> >> me he perdido en el zoo de clases y metodos de las librarias time, >> datetime, calendar... >> Mientras sigo investigando, si alguien me puede echar una mano y >> ahorrarme tiempo, estare eternamente agradecido. >> >> Tengo un timestamp con este formato "2018-09-23T10:05:30", y se que es en >> UTC. >> Necesito convertirlo a segundos desde el Epoch. >> >> Ya se que si hago lo siguiente >> >> d = datetime.datetime(2018, 9, 23, 10, 5, 30) >> calendar.timegm(d.timetuple()) >> >> me da el resultado correcto. >> Pero me obliga a extraer los valores numericos de la cadena. >> >> ?Puedo crear el objeto datetime.datetime() pasando la cadena original >> y el formato, al estilo strptime()? >> >> >> >> Muchas gracias por adelantado. >> Perdon por la ausencia de tildes. >> >> Jose >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es >