Ejemplos sencillos de
Python
<< 1 2 >>

Usa el módulo Turtle
Pruebas para el Programa Células de MTP
POO con Python. La Clase TBaraja
El solitario de los 4 reyes
GUIs: Índice de palabras (Tkinter)
GUIs: Valoración ACB (wxPython)
Busca en Google desde un script en Python


Usa el módulo Turtle

    Este módulo muestra las posibilidades de turtle, un módulo que acompaña a Python (debes haber instalado las librerías Tk) para la realización de gráficos sencillos. Aquí nos centramos en figuras geométricas, en una nueva versión nos ocuparemos de funciones matemáticas.

    En mi opinión, turtle es sencillo y potente, pero carece de algunas funciones que considero importantes (como funciones para saber en todo momento el ángulo de inclinación del lápiz o su posición).

    Aquí tienes un screenshot de la demo que he diseñado para mostrar el módulo:

Ejemplo de formas.py

Corrección: Sí se puede saber la posición del lápiz:

def pos():
...   from turtle import _pen
...   pos_abs=_pen._position
...   orig=_pen._origin
...   return (pos_abs[0]-orig[0],-pos_abs[1]+orig[1])
Y si tenemos varios lápices y queremos saber la posición de alguno en concreto:

def pos(lapiz):
   from turtle import _pen
   pos_abs=lapiz._position
   orig=lapiz._origin
   return (pos_abs[0]-orig[0],-pos_abs[1]+orig[1])

 

Pruebas Para el Programa Células de MTP


    Una de las tareas más tediosas después de haber escrito un programa es probarlo y depurarlo. Y más si se necesitan complicados datos de prueba. Afortunadamente, esto se puede automatizar. Un ejemplo de automatización es la creación de ficheros de prueba con toda la información necesaria para el programa. Además esta información es aleatoria (salvo ciertos parámetros que es mejor ajustar a mano) con lo que las pruebas serán mucho mejores y exhaustivas.

    Este programa genera ficheros de datos para el program Células. Si quieres ver las especificaciones de este programa, aquí las tienes. Ajusta a tu gusto los parámetros iniciales (simplemente modifica las constantes iniciales) y ejecuta la función run() del módulo. Obtendrás un fichero de datos aleatorio en el formato exigido. Se acabó poner las posiciones de los virus a mano !!

    Si este programa te ha resultado útil o tienes sugerencias que hacer, por favor házmelo saber. Aquí también puedes ver una muestra de un fichero de prueba .




POO con Python. La Clase TBaraja

    Como sabrás, Python es un lenguaje orientado a objetos. Esto significa que podemos utilizar esta útil metodologia para resolver problemas de programación. En este caso modelizamos mediante clases de objetos una Baraja. Con ella estudiaremos que solitarios de los que habitualmente realizamos son buenos o malos. Aquí puedes ver el diagrama de clases. Quizá no sea el más adecuado, pero de momento sirve para ilustrar el uso de clases en Python:

Diaograma de clases


    Esta es sólo una primera versión. Añadiremos más métodos y otras barajas como la francesa o la española de 52 cartas.

    En estos ejemplos estoy procurando seguir todos los convenios de la programación "elegante" en Python como las cadenas de documentación etc...



El solitario de los 4 reyes

    Seguro que todos conocéis este solitario. Para los que no, os lo explico un poco.

    Se ponen cuatro cartas destapadas sobre la mesa. De las cartas que quedan vamos sacando una a una. Si el número de la carta coincide con alguna de las de 4 cartas destapadas se desechan, salvo que se trate de reyes. Con los reyes no se pueden formar parejas (de hecho el objetivo es dejar los 4 reyes arriba). Si el número de la carta que sacamos no coincide con las de arriba se coloca en otro mazo. Entonces a la hora de buscar parejas siempre miraremos también la primer carta del mazo de las desemparejadas. Si hacemos una pareja, repondremos las cartas superiores con el mazo de las desemparejadas, y si no hay cartas con el mazo de mano.

    Supongo que con estas explicaciones no te habrás enterado de nada, así que lo mejor es que te mires el código ;)

    En mi opinión, un solitario es bueno si no sale demasiadas veces. Pienso que el porcentaje de acierto ha de estar entre un 5 y un 10%. Realizando pruebas con este programa y el script que te adjunto a continuación, nos sale que este solitario sale entre un 5 y un 6% de las veces, con lo que podemos darlo por bueno.

    Aquí tienes el script de pruebas:
   
#!/usr/bin/env python2

from commands import getoutput

NUMPRUEBAS = 10000
EXITO = 'Salió'
COMANDO = 'python2 reyes4.py'

exitos = 0

for x in range(NUMPRUEBAS):
    salida = getoutput(COMANDO)
    if salida == EXITO:
        exitos = exitos + 1

print "Número de Pruebas : %d" % NUMPRUEBAS
print "Número de Éxitos  : %d" % exitos


    Y esta es la salida de una ejecución sobre 10000 pruebas:

[jav@localhost barajas]$ ./test_4reyes.py
Número de Pruebas : 10000
Número de Éxitos  : 537


    Los resultados suelen ser similares en otras pruebas.


GUIs Índice de palabras (Tkinter)

Este código muestra el uso de Tkinter, el conjunto de widgets que acompañan a ¿todas? las distribuciones de Python para la creación de interfaces gráficas de usuario (GUIs). Es mi primera aplicación con Tkinter así que igual no está del todo bien, pero sirve para ilustrar primeros pasos. Los screeshots que se adjuntan son de la ejecución de la aplicación en Linux, aunque he probado el mismo código en Windows y funciona perfectamente

Abriendo ficheros  Seleccionando palabra

GUIs Valoración ACB (wxPython)

Este código muestra el uso de otro toolkit gráfico para Python: wxPython. Si quieres ejecutar este programa tendrás que bajarlo e instalarlo. En mi opinión wxPython es un toolkit mucho más completo que Tkinter.

La documentación no es todo lo buena que debiera, aunque con un poco de buena voluntad se sale adelante. Por ejemplo, leyendo el wxPyWiki podemos hacernos una idea del funcionamiento de wxPython, pero se queda corto en muchos aspectos. En estos casos no queda más remedio que leer la documentación de wxWindows (para C++). Lo dicho, con buena voluntad se sale adelante. Sin embargo existe una aplicación de prueba fantástica que se puede descargar aquí. Se trata de una aplicación que muestra todos los widgets en acción junto con el código para lograr esos efectos. De verdad, ayuda mucho.

Y esta es la aplicación para presentarte wxPython:



Quizá no sea el mejor ejemplo para aprender wxPython (este tiene más de 30 elementos) pero no es en absoluto complicado.

Vamos a comentar un poco el código que aquí nos ocupa. Si alguna vez has programado GUIs "a pelo" te sorprenderá que los widgets estén donde deben estar. Es decir que aparezcan colocaditos del modo que queremos. Esto se consigue con los sizers q no son mas unos de los administradores de diseño de wxPython. Combinado sizers verticales y horizontales podemos colocar los widgets como queramos. Por ejemplo el esquema que sigue esta aplicación es:



Como vemos, hay muchos sizers. Uno principal vertical en el que insertamos una etiqueta un sizer horizontal y un botón. Dentro de ese sizer horizontal, encontramos dos verticales, y dentro de cada uno de los verticales encontramos sizers horizontales (6 y 4 respectivamente). Dentro de cada uno de esos sizers habrá una etiqueta de texto y un control de texto para la entrada del usuario. Tirando por lo bajo tenemos unos 30 widgets. No dejes que esto te confunda, en realidad, es muy sencillo.

Consejo: Dibuja en un papel la apariencia de tus aplicaciones antes de programarlas. Te evitará muchos quebraderos de cabeza

Busca en Google desde un script en Python

Un script que muestra cómo hacer casi cualquier cosa en Python en muy sencillo. Este script puede ser adaptado por cualquiera que lo considere útil para incluirlo en algún programa. Nunca está de más tener un buscador como Google empotrado en la aplicación.

Con este script ya tienes un ejemplo de programación en Internet con Python.




http://users.servicios.retecal.es/tjavier  Última modificación 13/4/2003