1 Que puedo hacer Python
2 Que vamos a ver Un poco de Python, ¿que es? Los falsos mitos de PythonDiferencias entre Python 2.x y 3.x Lo básico Tipos de datos Estructuras de control Funciones y procedimientos Estructuras avanzadas Listas Diccionarios Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
3 Un poco de Python, ¿que es?Es un lenguaje 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 Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
4 Un poco de Python, ¿que es? (II)Es multiplataforma Open Source(PSFL) Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
5 Falsos Mitos de python Python es LentoPermite llamadas nativas a funciones en C Python 3 tiene una implementación mucho mas eficiente que Python 2 PyPy -> python implementado en python Poca capacidad de desarrollar aplicaciones completas openERP, parte del Kernel de linux….. Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
6 DIFERENCIAS ENTRE PYTHON 2 y ·La principal razón de que la portabilidad de los desarrolladores de Python 2 a 3 es que Python 2 es muy estable y que se debían de portar muchas bibliotecas de Python 2 a 3 pero en la actualidad ese problema ya no existe ya que la mayoría de ellas están en ambas versiones Algunas diferencias son: Print es una función en python 3 División de números enteros Las “cadenas” (“strings”) son Unicode de forma predeterminada en Python 3 Input es una cadena de texto en Python 3 La función next() y el método .next() En python 2 se puede usar next tanto como una función next(algo) o como un método algo.next(), sin embargo en Python 3 solo se puede usar como función: Comparando tipos: Python 3 lanza excepción si se tratan de comparar tipos diferentes Manejo de Excepciones Python 3 estandariza el tratamiento de excepciones Mas info Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
7 DEMO intro Iniciar interprete en Python Hola MundoCalcular 33 elevado a 5 Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
8 Tipos de datos Tipo Clase Notas Ejemplostr Cadena Inmutable 'Cadena' unicode Versión Unicode de str u'Cadena' list Secuencia Mutable, puede contener objetos de diversos tipos [4.0, 'Cadena', True] tuple 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 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 Precisión arbitraria 42L ó L float Número decimal Coma flotante de doble precisión complex Número complejo Parte real y parte imaginaria j. ( j) bool Booleano Valor booleano verdadero o falso True o False Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
9 Python - Estructuras de Control de FlujoEstructuras 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). Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
10 Python - Estructuras de Control de FlujoEstructuras de control iterativas Bucle while Bucle for Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
11 Funciones y ProcedimientosDefinición de funciones Sintaxis: Definición de procedimientos Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
12 Listas - Métodos de agregadoAgregar 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”) Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
13 Listas - Métodos de eliminaciónEliminar el último elemento de la lista Método: pop() Retorna: el elemento eliminado Eliminar un elemento por su índice Método: pop(índice) Eliminar un elemento por su valor Método: remove(“valor”) Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
14 Listas - Métodos de ordenOrdenar 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) Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
15 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 Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
16 Listas – Valor máximo y mínimoPodemos 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 Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
17 Demo listas Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
18 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 Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
19 DICCIONARIOS - Métodos de eliminaciónEliminar un par (clave:valor) Método: del diccionario[clave] Vaciar un diccionario Método: clear() Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
20 DICCIONARIOS - Métodos de agregado y creaciónCopiar 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) Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
21 DICCIONARIOS - Métodos de retornoObtener 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 Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
22 Demo diccionarios Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
23 Strings - Métodos de formatoConvertir 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 Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
24 Strings - Métodos de BúsquedaContar 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 Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
25 Strings - Métodos de ValidaciónSaber 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]) Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
26 Strings - Métodos de Validación IISaber 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() Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
27 Strings - Métodos de SustituciónDar 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”]) Eliminar caracteres a la derecha de una cadena Método: rstrip([“caracter”]) Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
28 Strings - Métodos de unión y divisiónUnir 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 Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
29 Demo Strings Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
30 Facilitándonos el trabajo - SetuptoolsSetuptools, 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. Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
31 Facilitándonos el trabajo - easyinstalleasy_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 SQLObject easy_install -i SQLObject (replica repositorio) easy_install easy_install ./Descargas/OtroPaquete 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 Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
32 Facilitándonos el trabajo - PIPMuchos paquetes pueden ser encontrados en el Índice de Paquete de la Python (PyPI).Instalación en sistemas Debian sudo apt-get install build-essential python-pip Ejemplos de uso pip install sqlite pip install sqlalchemy Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015
33 DEMO Creación de una aplicación permita la introducción de datos y tenga la opción de indicar si una palabra ya ha sido introducida, en este caso indicarlo y contabilizar el numero de veces que se ha introducido ya, en caso contrario,introducirla (Utilizar diccionarios) APRENDER A ABRIR FICHEROS Abrir un fichero Contar las veces que aparece cada palabra Guardar un fichero de texto las veces que aparece cada palabra
34 preguntas Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015