Download Python 2
Document related concepts
no text concepts found
Transcript
Que puedo hacer PYTHON QUE VAMOS A VER Un poco de Python, ¿que es? Los falsos mitos de Python Diferencias 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 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 UN POCO DE PYTHON, ¿QUE ES? (II) Es multiplataforma Open Source(PSFL) http://es.wikipedia.org/wiki/Python_Software_Foundation_License Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015 FALSOS MITOS DE PYTHON Python es Lento Permite 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 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 DEMO INTRO Iniciar interprete en Python Hola Mundo Calcular 33 elevado a 5 Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015 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 True o False - Grupo Universitario Alejandro Anuncibay de Informatica - Valladolid 2015 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). Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015 PYTHON - ESTRUCTURAS DE CONTROL DE FLUJO Estructuras de control iterativas Bucle while Bucle for Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015 FUNCIONES Y PROCEDIMIENTOS Definición de funciones Sintaxis: Definición de procedimientos Sintaxis: Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015 LISTAS - MÉTODOS DE AGREGADO Agregar un elemento al final de la lista Método: Agregar varios elementos al final de la lista Método: append(“nuevo elemento”) 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 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”) Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015 LISTAS - MÉTODOS DE ORDEN Ordenar una lista en reversa (invertir orden) Método: Ordenar una lista en forma ascendente Método: reverse() sort() Ordenar una lista en forma descendente Método: sort(reverse=True) Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015 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 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 Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015 DEMO LISTAS Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015 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 DICCIONARIOS - MÉTODOS DE ELIMINACIÓN Eliminar un par (clave:valor) Método: del diccionario[clave] Vaciar un diccionario Método: clear() Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015 DICCIONARIOS - MÉTODOS DE AGREGADO Y CREACIÓN Copiar un diccionario Método: copy() >>dicc2 Crear un nuevo diccionario desde las claves de una secuencia = dicc1.copy() 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 DICCIONARIOS - MÉTODOS DE RETORNO Obtener el valor de una clave Saber si una clave existe en el diccionario Método: get(clave) Retorna: valor 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 DEMO DICCIONARIOS Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015 STRINGS - MÉTODOS DE FORMATO Convertir a mayúscula la primera letra 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: capitalize() Retorna: una copia de la cadena con la primera letra en 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 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 Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015 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 Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015 STRINGS - MÉTODOS DE VALIDACIÓN II Saber si una cadena es alfanumérica Saber si una cadena es alfabética Método: islower() Saber si una cadena contiene solo mayúsculas Método: isdigit() Saber si una cadena contiene solo minúsculas Método: isalpha() Saber si una cadena es numérica Método: isalnum() Método: isupper() Saber si una cadena contiene solo espacios en blanco Método: isspace() Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015 STRINGS - MÉTODOS DE SUSTITUCIÓN Dar formato a una cadena, sustituyendo texto dinámicamente Reemplazar texto en una cadena Método: strip([“caracter”]) Retorna: la cadena sustituida Eliminar caracteres a la izquierda de 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: format(*args, **kwargs) Retorna: la cadena formateada Método: lstrip([“caracter”]) Retorna: la cadena sustituida Eliminar caracteres a la derecha de una cadena Método: rstrip([“caracter”]) Retorna: la cadena sustituida Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015 STRINGS - MÉTODOS DE UNIÓN Y DIVISIÓN Unir una cadena de forma iterativa 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: join(iterable) Retorna: la cadena unida con el iterable (la cadena es separada por cada uno de los elementos del iterable) 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 DEMO STRINGS Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015 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. Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015 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 Ejemplos de uso sudo apt-get install build-essential python-dev python-setuptools 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 Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015 FACILITÁNDONOS EL TRABAJO - PIP Muchos 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 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 PREGUNTAS Alejandro Anuncibay - Grupo Universitario de Informatica - Valladolid 2015