Mostrando entradas con la etiqueta Python. Mostrar todas las entradas
Mostrando entradas con la etiqueta Python. Mostrar todas las entradas

lunes, 30 de marzo de 2009

Cómo crear una moneda de cinco euros (usando Python)

El Ministerio de Finanzas Holandés organizó en 2008 un concurso en el que fueron invitados a participar un grupo de artistas y arquitectos. El objetivo era diseñar una moneda conmemorativa de 5 euros con el tema "Los Países Bajos y la arquitectura".

La moneda ganadora, de la que se ha hecho una tirada de 350.000 unidades, ha sido diseñada por Stani Michiels, quien además de ser arquitecto es conocido en el mundo de Python por ser el creador del IDE SPE (Stani's Python IDE).


El diseño de Stani está generado por varios scripts de Python, utilizando las librería PIL y PyCairo, entre otras. Todo está diseñado mediante software libre corriendo sobre Ubuntu. En su blog explica con suficiente detalle las ideas detrás de cada aspecto de la moneda y los procedimientos que ha seguido para su realización. Coninua...

lunes, 23 de junio de 2008

Analema con PyEphem

Una de las mejores características de Python es la gran cantidad de módulos existentes. Una instalación básica ya incorpora multitud de ellos, por eso se suele decir que Python viene "con pilas incluídas". Pero fuera de la librería estándar hay una infinidad creciente de utilidades que permiten utilizar Python para casi cualquier aplicación concebible. Hoy voy a presentar uno de ellos: PyEphem.

PyEphem es un módulo de Python creado alrededor de la librería libastro (algo que en programación se llama wrapper), que contiene multitud de funciones de cálculo astronómico y es la parte central del magnífico software XEphem. PyEphem permite calcular efemérides y posiciones de astros con gran precisión, teniendo en cuenta efectos como la precesión y nutación de la Tierra, o la refracción atmosférica. No voy a entrar a describir las clases y funciones de la librería, porque para eso está la página oficial. Pero sí voy a mostrar un ejemplo de lo que se puede hacer con PyEphem y unas pocas líneas de Python.

Si observamos la posición del Sol en el cielo cada día a la misma hora y la representamos en un gráfico, al cabo de un año obtendremos una figura con forma de ocho conocida como analema. La razón de que se forme esta figura está en la inclinación del eje de la tierra frente al plano de la eclíptica, y en que la Tierra avanza con velocidad variable en su órbita ligeramente elíptica. El Sol se encuentra en los extremos superior o inferior de la analema en el solsticio de Verano y de Invierno, respectivamente.

El siguiente código en Python calcula el analema que sería visible en 2008 desde mi casa, observando el Sol cada día a las 12 horas de tiempo solar medio. El analema es dibujado en una gráfica utilizando el módulo matplotlib/pylab.


#!/usr/bin/python

import ephem
from pylab import *

obs = ephem.Observer()
obs.long = '-5:44:16'
obs.lat = '43:29:4'
hour = 12 - ephem.degrees(obs.long)/pi*12
obs.date = (2008, 1, 1, hour)

sun = ephem.Sun()
sun_alt = []
sun_az = []

for i in range(365):
sun.compute(obs)
sun_az.append(sun.az*180/pi)
sun_alt.append(sun.alt*180/pi)
obs.date = obs.date + 1

plot(sun_az, sun_alt, '.')
axis('equal')
grid()
show()

En primer lugar se crea el objeto obs, que representa al observador, y se fijan parámetros: latitud, longitud y fecha inicial. A continuación se crea el objeto Sol y un par de listas vacías donde después se guardarán las coordenadas (azimut y altura) del Sol para cada día. Después un bucle ejecuta el cálculo de la posición para cada día del año y va rellenando las listas. Por último se crea la gráfica y se representa. El código es sencillo de entender incluso sin haber programado nunca en Python. Lo más complicado quizá sea el cálculo de la hora de observación a partir de la longitud del lugar. Hay que tener en cuenta que PyEphem trabaja únicamente con tiempo universal.

Aquí el resultado:


Este es sólo un educativo ejemplo de lo que puede hacerse con este potente módulo. A cualquier aficionado a la astronomía y a la programación se le pueden ocurrir otras aplicaciones más útiles.
Coninua...

martes, 17 de junio de 2008

Python

Dos son los eventos que han hecho que vuelva a sentir mi antigua fascinación por la informática: La transición definitiva a GNU/Linux y el descubrimiento de Python. Si el hecho de usar Linux me ha devuelto la pasión por explorar y manipular los entresijos del sistema operativo, Python ha hecho que la programación vuelva a ser un placer.

Aprendí mis primeros conceptos de programación con unos doce años, en la época del Spectrum y del Amstrad CPC, leyendo libros de Basic para niños. Después de aqueños primeros pasos he programado muchas líneas en C y C++, unas cuantas más en Pascal, Visual Basic, Matlab y PHP, y unas pocas en Java, Javascript, Bash, y diferentes ensambladores. Quizá no haya llegado a conocer suficientemente bien algunos de estos lenguajes como para poder emitir un juicio de valor, pero en mi opinión ninguno de los anteriores lenguajes puede proporcionar nada parecido a la experiencia de programar en Python.

Python fue creado en 1990 por Guido van Rossum, quien bautizó a su creación en honor al grupo cómico Monty Python. En los últimos años el lenguaje está teniendo cada vez más seguidores, habiendo sido declarado "lenguaje de mayor crecimiento del 2007" según el índice TIOBE. Actualmente, según este índice, Python sigue creciendo en popularidad, mientras los gigantes C, C++ y Java van cayendo mes tras mes.

Python hace fácil y divertido lo difícil y tedioso, algo que Guido refleja en su lema "Computer Programming for Everybody". Pero no menos importantes son otras de sus características: es libre y gratuito, es multiplataforma y cuenta con una enorme cantidad de módulos que simplifican cualquier tarea existente, desde la programación de aplicaciones gráficas a la robótica.

Python tiene algún detalle que puede resultar chocante al principio, como el hecho de que los tabuladores sean significativos, pero uno enseguida se acostumbra y se da cuenta de que la sintaxis de Python es mucho más natural y fácil de recordar que la de la mayoría de lenguajes. Si después de escribir unas cuantas líneas de Python aún no te has quedado completamente prendado, puede ser por alguna de las siguientes razones:

  • Eres un auténtico incondicional de Perl o de Ruby y no piensas cambiar. Punto.

  • Aún no has escrito suficiente código. Prueba a escribir algunas líneas más.

  • Quizá al fin y al cabo la programación no sea lo tuyo. Prueba con Visual Basic.

Vale, quizá sea demasiado categórico en mis afirmaciones. No soy en absoluto un hacker de la programación, mis funciones no suelen funcionar a la primera y tengo que pensarme dos veces qué límites aplicar a un bucle for antes de escribirlo. Después de todo no soy informático, así que quizá los programadores no deban tomarse muy en serio mis palabras. Pero a quien sí deberían tomar en serio es a un hacker tan legendario como Eric S. Raymond, quien habla muy sesudamente de sus impresiones acerca de Python en su artículo Why Python?

De verdad. Si te interesa la programación y aún no lo has probado, hazlo. Si usas GNU/Linux o Mac OS ya lo tendrás instalado. Sólo tienes que abrir un terminal y escribir "python". Si usas Windows tendrás que descargártelo de www.python.org.
Coninua...