Que puedo hacer PYTHON 2
QUE VAMOS A VER Un poco de Python, que es? Los falsos mitos de Python Facilitándonos el trabajo Utilidades practicas La utilidad de las Listas, Diccionarios y Strings Interfaces graficas basadas en formularios(wizards) Persistencia de datos utilizando BD R.E. Extraer datos de una web
UN POCO DE PYTHON, QUE ES? Es un lenguage de programación de (muy) alto nivel Es un lenguaje interpretado Es un lenguaje multiparadigama Es fuertemente tipado pero dinámico Favorece la lectura de código Obliga a la estructuración visual del código
UN POCO DE PYTHON, QUE ES? (II) Es multiplataforma Open Source(PSFL) http://es.wikipedia.org/wiki/python_software_foundation_license
FALSOS MITOS DE PYTHON Python es Lento Permite llamadas nativas a funciones en C PyPy -> python implementado en python Poca capacidad de desarrollar aplicaciones completas openerp, parte del Kernel de linux..
FACILITÁNDONOS EL TRABAJO - SETUPTOOLS Setuptools, es una colección de mejoras para el módulo distutils de Python Por defecto, utiliza PyPI para buscar los paquetes Permite crear paquetes Egg Python, que son Paquetes Python empaquetados en un sólo archivo para su distribución. Incluye archivos de configuración y todos los archivos que forman parte del directorio de trabajo, sin necesidad de listarlos individualmente o crear archivos de manifiesto.
FACILITÁNDONOS EL TRABAJO - EASYINSTALL easy_install, es una herramienta que se basa en Setuptools para automáticamente encontrar y descargar desde Internet las dependencias, para instalarlas o actualizarlas, ya sea bajo demanda o cuando son requeridas como dependencias al instalar otra aplicación Instalación en sistemas Debian sudo apt-get install build-essential python-dev python-setuptools Ejemplos de uso easy_install SQLObject easy_install -f http://pythonpaste.org/package_index.html SQLObject easy_install -i http://pypi.ejemplo.com/simple SQLObject (replica repositorio) easy_install http://ejemplo.com/ruta/a/mipaquete-1.2.3.tgz easy_install./descargas/otropaquete-3.2.1-py2.7.egg easy_install "ZopeSkel==2.21.2 (versión especifica) easy_install --upgrade PyProtocols Instalar pip easy_install python-pip Es otro instalador de paquetes
DEMO INTRO Iniciar interprete en python Calcular 33 elevado a 5 Calcular 2 elevado a 128 Calcular 5 elevado a 512
TIPOS DE DATOS Tipo Clase Notas Ejemplo str Cadena Inmutable 'Cadena' unicode Cadena Versión Unicode de str u'cadena' list Secuencia Mutable, puede contener objetos de diversos tipos [4.0, 'Cadena', True] tuple Secuencia Inmutable, puede contener objetos de diversos tipos (4.0, 'Cadena', True) set Conjunto Mutable, sin orden, no contiene duplicados set([4.0, 'Cadena', True]) frozenset Conjunto Inmutable, sin orden, no contiene duplicados frozenset([4.0, 'Cadena', True]) dict Mapping Grupo de pares clave:valor {'key1': 1.0, 'key2': False} int Número entero Precisión fija, convertido en long en caso de overflow. 42 long Número entero Precisión arbitraria 42L ó 456966786151987643L float Número decimal Coma flotante de doble precisión 3.1415927 complex Número complejo Parte real y parte imaginaria j. (4.5 + 3j) bool Booleano Valor booleano verdadero o falso Alejandro True Anuncibay o False - Grupo Universitario
PYTHON - ESTRUCTURAS DE CONTROL DE FLUJO Estructuras de control de flujo condicionales Las estructuras de control de flujo condicionales, se definen mediante el uso de tres palabras claves reservadas, del lenguaje: if (si), elif (sino, si) y else (sino).
PYTHON - ESTRUCTURAS DE CONTROL DE FLUJO Estructuras de control iterativas Bucle while Bucle for
FUNCIONES Y PROCEDIMIENTOS Definición de funciones Sintaxis: Definición de procedimientos Sintaxis:
LISTAS - MÉTODOS DE AGREGADO Agregar un elemento al final de la lista Método: append( nuevo elemento ) Agregar varios elementos al final de la lista Método: extend(otra_lista) Agregar un elemento en una posición determinada Método: insert(posición, nuevo elemento )
LISTAS - MÉTODOS DE ELIMINACIÓN Eliminar el último elemento de la lista Método: pop() Retorna: el elemento eliminado Eliminar un elemento por su índice Método: pop(índice) Retorna: el elemento eliminado Eliminar un elemento por su valor Método: remove( valor )
LISTAS - MÉTODOS DE ORDEN Ordenar una lista en reversa (invertir orden) Método: reverse() Ordenar una lista en forma ascendente Método: sort() Ordenar una lista en forma descendente Método: sort(reverse=true)
LISTAS - MÉTODOS DE BÚSQUEDA >>> nombres_masculinos = ["Alvaro", "Miguel", "Edgardo", "David", "Miguel"] Contar cantidad de apariciones elementos Método: count(elemento) >>> nombres_masculinos.count("miguel") 2 Obtener número de índice Método: index(elemento[, indice_inicio, indice_fin]) >>> nombres_masculinos.index("miguel") 1 >>> nombres_masculinos.index("miguel", 2, 5) 4
LISTAS VALOR MÁXIMO Y MÍNIMO Podemos obtener además, el valor máximo y mínimo tanto de listas como de tuplas: Valor máximo Método: max() Retorna: el valor máximo Valor mínimo Método: min() Retorna: el valor mínimo
DEMO LISTAS
DICCIONARIOS Un diccionario en Python es, en esencia, lo mismo: una colección de pares formados por claves y definiciones. Las claves no tienen que ser, necesariamente, palabras: puede servir cualquier tipo que sea inmutable, como los números o los strings. Las claves han de ser únicas. Si tratamos de agregar otra ya existente, simplemente el valor nuevo sustituirá al antiguo
DICCIONARIOS - MÉTODOS DE ELIMINACIÓN Eliminar un par (clave:valor) Método: del diccionario[clave] Vaciar un diccionario Método: clear()
DICCIONARIOS - MÉTODOS DE AGREGADO Y CREACIÓN Copiar un diccionario Método: copy() >>dicc2 = dicc1.copy() Crear un nuevo diccionario desde las claves de una secuencia Método: dict.fromkeys(secuencia[, valor por defecto]) Concatenar diccionarios Método: update(diccionario) >>dicc1 = dicc1.update(dicc2)
DICCIONARIOS - MÉTODOS DE RETORNO Obtener el valor de una clave Método: get(clave) Retorna: valor Saber si una clave existe en el diccionario Método: has_key(clave) Retorna: True o False Obtener las claves y valores de un diccionario Método: iteritems() Alias: items() Ejemplo: for clave, valor in diccionario.iteritems(): print "El valor de la clave %s es %s" % (clave, valor) Obtener los valores de un diccionario Método: values() Retorna: lista [] Obtener la cantidad de elementos de un diccionario Metodo: len(dicc) Retorna: número Elementos
DEMO DICCIONARIOS
STRINGS - MÉTODOS DE FORMATO Convertir a mayúscula la primera letra Método: capitalize() Retorna: una copia de la cadena con la primera letra en mayúsculas Convertir una cadena a minúsculas Método: lower() Retorna: una copia de la cadena en minúsculas Convertir una cadena a mayúsculas Método: upper() Retorna: una copia de la cadena en mayúsculas Convertir mayúsculas a minúsculas y viceversa Método: swapcase() Retorna: una copia de la cadena convertidas las mayúsculas en minúsculas y viceversa
STRINGS - MÉTODOS DE BÚSQUEDA Contar cantidad de apariciones de una subcadena Método: count( subcadena [, posicion_inicio, posicion_fin]) Retorna: un entero representando la cantidad de apariciones de subcadena dentro de cadena Buscar una subcadena dentro de una cadena Método: find( subcadena [, posicion_inicio, posicion_fin]) Retorna: un entero representando la posición donde inicia la subcadena dentro de cadena. Si no la encuentra, retorna -1
STRINGS - MÉTODOS DE VALIDACIÓN Saber si una cadena comienza con una subcadena determinada Método: startswith( subcadena [, posicion_inicio, posicion_fin]) Retorna: True o False Saber si una cadena finaliza con una subcadena determinada Método: endswith( subcadena [, posicion_inicio, posicion_fin]) Retorna: True o False
STRINGS - MÉTODOS DE VALIDACIÓN II Saber si una cadena es alfanumérica Método: isalnum() Saber si una cadena es alfabética Método: isalpha() Saber si una cadena es numérica Método: isdigit() Saber si una cadena contiene solo minúsculas Método: islower() Saber si una cadena contiene solo mayúsculas Método: isupper() Saber si una cadena contiene solo espacios en blanco Método: isspace()
STRINGS - MÉTODOS DE SUSTITUCIÓN Dar formato a una cadena, sustituyendo texto dinámicamente Método: format(*args, **kwargs) Retorna: la cadena formateada Reemplazar texto en una cadena Método: replace( subcadena a buscar, subcadena por la cual reemplazar ) Retorna: la cadena reemplazada Eliminar caracteres a la izquierda y derecha de una cadena Método: strip([ caracter ]) Retorna: la cadena sustituida Eliminar caracteres a la izquierda de una cadena Método: lstrip([ caracter ]) Retorna: la cadena sustituida Eliminar caracteres a la derecha de una cadena Método: rstrip([ caracter ]) Retorna: la cadena sustituida
STRINGS - MÉTODOS DE UNIÓN Y DIVISIÓN Unir una cadena de forma iterativa Método: join(iterable) Retorna: la cadena unida con el iterable (la cadena es separada por cada uno de los elementos del iterable) Partir una cadena en tres partes, utilizando un separador Método: partition( separador ) Retorna: una tupla de tres elementos donde el primero es el contenido de la cadena previo al separador, el segundo, el separador mismo y el tercero, el contenido de la cadena posterior al separador Partir una cadena en varias partes, utilizando un separador Método: split( separador ) Retorna: una lista con todos elementos encontrados al dividir la cadena por un separador Partir una cadena en en líneas Método: splitlines() Retorna: una lista donde cada elemento es una fracción de la cadena divida en líneas
DEMO STRINGS
EASYGUI Una forma sencilla y rápida de crear interfaces en Python Interfaces tipo formulario Muy Pythonico Utiliza la librería TK -> librería grafica que incorpora python por defecto Multiplataforma
EASYGUI II Instalación Se puede instalar Forma portable, descargar de internet e importar desde tu proyecto http://sourceforge.net/projects/easygui/files/0.97/easy gui-0.97.zip/download Lo primero, importarlo en tu proyecto: from easygui import *
EASYGUI CAJAS DE BOTONES msgbox msgbox( texto ) ccbox, ynbox -> retornan boleano ccbox(msg, title) ynbox(msg,title) buttonbox, indexbox, boolbox (message, title, [options])
EASYGUI LISTA DE OPCIONES choicebox opcion = choicebox(msg, title, choices) multchoicebox opciones = multchoicebox(message, title, [options])
EASYGUI CUADRO DE ENTRADA enterbox enterbox(msg,title) integerbox integerbox(msg,title) passwordbox passwordbox(msg,title) multenterbox fieldvalues = [] fieldvalues = multenterbox(msg,title, fieldnames)
EASYGUI MOSTRAR TEXTO textbox textbox(string(s)) codebox codebox (string(s))
EASYGUI TRABAJAR CON FICHEROS diropenbox diropenbox() Retorna:nombre de directorio fileopenbox fileopenbox () Retorna:nombre de fichero filesavebox filesavebox () Retorna:nombre de fichero
DEMO EASYGUI
PYTHON Y SQLITE Base de datos serverless, basada en ficheros Rápida y de bajo consumo de recursos Uso import sqlite3
RE Librería standard de python que implementa expresiones regulares Las expresiones regulares, también llamadas regex o regexp consisten en patrones que describen conjuntos de cadenas de caracteres. http://www.tutorialspoint.com/python/pdf/python_ reg_expressions.pdf
EXTRAER DATOS DE UNA WEB Ejemplo practico para extraer datos de una web
PREGUNTAS
ALGUNOS RETOS CREAR UN PROGRAMA PARA ALMACENAR EN UNA BASE DE DATOS UNA AGENDA DE TELEFONOS CON GUI MEJORAR EL SOFTWARE PARA RASTREAR LA WEB CUALQUIER OTRA COSA QUE SE OS OCURRA