Download Introducción a Python con ejemplos - Cinvestav
Document related concepts
no text concepts found
Transcript
Introducción a Python con ejemplos Introducción a Python con ejemplos Gerardo Montemayor-García Laboratorio de Tecnologías de la Información, CINVESTAV - Tamaulipas, Parque Científico y Tecnológico TECNOTAM. Km. 5.5, carretera Cd. Victoria-Soto La Marina. Cd. Victoria, Tamaulipas, 87130, MÉXICO gmontemayor@tamps.cinvestav.mx 15 de Noviembre del 2011 Introducción a Python con ejemplos 1 Características 2 Ejecutando código Python 3 Introducción informal a Python 4 Estructuras de control 5 Estructuras de datos Introducción a Python con ejemplos Características Características I Desarrollado por Guido van Rossum a principios de los 1990s. Su sitio Web oficial: www.python.org. Es open source. Su sintaxis y estructura son muy limpias, intuitivas y fáciles de aprender. Desarrollo rápido de aplicaciones en muchas áreas en la mayoría de las plataformas. Los programas en Python son comúnmente más cortos que sus equivalentes en C, C++ o Java Es posible agregar extensiones desarrolladas en C o C + +. Manejo de memoria automático. Introducción a Python con ejemplos Características Características II Es un lenguaje de programación multiparadigma: POO, Programación Imperativa y Programación Funcional. Otros paradigmas están soportados mediante el uso de extensiones. Python usa tipado dinámico y es fuertemente tipado. Python es OO. Soporta conceptos como polimorfismo, sobrecarga de operadores y herencia múltiple. Resolución dinámica de nombres (ligadura dinámica de métodos). Tiempos de ejecución en http://shootout.alioth.debian.org/ Introducción a Python con ejemplos Ejecutando código Python Ejecutando código Python I Llamar al interprete Python puede variar dependiendo de la plataforma. Comúnmente lo encontramos como ’/usr/local/bin/python’. En un sistema basado en unix todo lo que se debe de hacer es tipear en la línea de comandos1 : :$ python Después de un breve mensaje aparecerá el símbolo >>>, lo cuál indica que ha iniciado el interprete. Para salir del interprete teclear ctrl + D, o escribir exit(). Nuestro hello world!: >>> print(’hello world’) hello world! 1 Si ya se ha configurado la variable de entorno Introducción a Python con ejemplos Ejecutando código Python Ejecutando código Python II Los scripts de Python pueden ser escritos en archivos de texto utilizando el sufijo .py. El interprete puede leer scripts de diferente manera: Ejecutar el script y retornar el resultado en la terminal $ python script.py La opción -i deja abierta la terminal después de ejecutar el script $ python -i script.py El comando execfile lee y ejecuta el script como si hubiese sido escrito directamente en el interprete $ >>> execfile(’script.py’) Ejecuta el script enviando parámetros de entrada2 $ python script.py param1 param2 param3 2 Mas adelante habrá más detalles sobre el paso de parámetros Introducción a Python con ejemplos Introducción informal a Python Utilizando Python como calculadora I Los enteros son implementados como los ’long’ de C >>> 2 + 2 4 >>> #Comentario: >>> 2 + 2 #Comentario en la misma línea 4 >>> (50 − 5 ∗ 6)/4 5.0 >>> 8/5 #División entre enteros devuelve enteros 1.0 >>> 999999999999999999999L #Un ’long integer’ debe terminar en ’l’ o ’L’ Introducción a Python con ejemplos Introducción informal a Python Utilizando Python como calculadora II División con flotantes devuelve flotantes >>> 8.0/5 1.6 >>> 8.0//5 #La doble // fuerza el resultado a la función piso 1.0 Los flotantes son implementados como los ’double’ de C >>> 0. + 1.0 + 1e10 + 3.14e − 2 + 6.99E4 10000069901.031401 El signo ’=’ se utiliza para asignar valores a las variables >>> width = 20 >>> height = 5 ∗ 9 >>> width * height 900 Introducción a Python con ejemplos Introducción informal a Python Utilizando Python como calculadora III Un valor puede ser asignado a muchas variables simultáneamente >>> x = y = z = 0 >>> x 0 >>> y 0 >>> z 0 En el modo interactivo, la última impresión es asignada a la variable _ >>> 500.5 ∗ 3 1501.5 >>> _+ 2 1503.5 Introducción a Python con ejemplos Introducción informal a Python Utilizando Python como calculadora IV Las variables deben de ser definidas (se les debe asignar un valor) antes de que puedan ser utilizadas >>> n Traceback (most recent call last): File “<stdin>”, line 1, in <module> NameError: name ’n’ is not defined Python también soporta números complejos >>> 2 + 3j #(real + imaginarioj) (2+3j) >>> complex(0,1) #complex(real + imaginarioj) (2+3j) Introducción a Python con ejemplos Introducción informal a Python Utilizando Python como calculadora V También es posible realizar operaciones con números complejos >>> 3 + 1j * 3 (3+3j) >>> a = 1.5+0.5j >>> a.real 1.5 >>> a.imag 0.5 >>> float(a) Traceback (most recent call last): File “<stdin>”, line 1, in <module> TypeError: can’t convert complex to float >>> abs(a) #sqrt(a.real**2 + a.imag**2) 1.5811388300841898 Introducción a Python con ejemplos Introducción informal a Python Strings El manejo de cadenas en Python también es interesante >>> ’abcDEF’ ’abcDEF’ >>> “abcDEF” #Con doble comilla el texto puede extenderse sobre múltiples líneas ’abcDEF’ >>> a=’abcdef’ >>> len(a) #Longitud de la cadena en ’a’ 6 Concatenación y repetición >>> ’abc’+’def’ #Concatenación ’abcdef’ >>> ’abc’*3 #Repetición ’abcabcabc’ Introducción a Python con ejemplos Introducción informal a Python Indexado y rebanado I Python inicia indexando en 0. Una cadena s tiene desde el índice 0 hasta len(s) − 1 (donde len(s) es el tamaño de s) en cantidades enteras. s[i] hace referencia al ith elemento de s >>> s=’cadenas’ >>> s[1] ’a’ s[i : j] obtiene los elementos desde i (incluido) hasta j (no incluido) >>> s[1:4] ’ade’ s[: j] obtiene todos los elementos hasta la posición j − 1 >>> s[:4] ’cade’ Introducción a Python con ejemplos Introducción informal a Python Indexado y rebanadas I s[i :] obtiene todos los elementos de i en adelante (incluyéndolo) >>> s[2:] ’denas’ s[i : j : k] obtiene cada kth elemento iniciando en i (inlcusivo) y finalizando en j (no inclusivo) >>> s[0:5:2] ’cdn’ Python también soporta indices negativos. Por ejemplo, s[−1] significa extraer el primer elemento de s del final (igual que s[len(s) − 1]) >>> s[-1] ’s’ >>> s[-3] ’n’ Introducción a Python con ejemplos Introducción informal a Python Listas I (operaciones básicas) Las listas pueden contener números, cadenas, sub-listas, o nada. Son definidas con [] Por ejemplo: L1 = [0, 1, 2, 3], L2 = [0 jose0 ,0 diana0 ], L3 = [0, 1, [2, 3],0 mario0 , [0 diana0 ,0 luis0 ]], L4 = [] El indexado funciona como en las cadenas >>> L1 = [0,1,[2,3],’mario’,[’diana’,’luis’]] [0,1,[2,3],’mario’,[’diana’,’luis’]] >>> L1[3]=2 [0,1,[2,3],2,[’diana’,’luis’]] Indexado: L1[i], L2[i][j] Rebanadas: L3[i : j] Concatenación: L1 + L2 Introducción a Python con ejemplos Introducción informal a Python Listas II (operaciones básicas) Repetición: L1 ∗ 3 Añadir (L1=[1,2,3]): >>> L1.append(4) [1,2,3,4] Ordenar (L1=[4,2,1,3]): >>> L1.sort() [1,2,3,4] Reversa (L2=[1,2,3,4]): >>> L2.reverse() [4,3,2,1] Introducción a Python con ejemplos Introducción informal a Python Listas III (operaciones básicas) Eliminar índices (L2=[1,2,3,4]): >>> del L2[2] [1,2,4] >>> L2[1:3]=[] [1] Re-asignación de rebanadas (L2=[1,2,3,4,5]): >>> L2[1:4]=[9,9,9] [1, 9, 9, 9, 5] Listas automáticas de enteros: >>> range(10) [0,1,2,3,4,5,6,7,8,9] >>> range(1,10) [1,2,3,4,5,6,7,8,9] >>> range(1,10,2) [1,3,5,7,9] Introducción a Python con ejemplos Introducción informal a Python Tuplas Las tuplas son muy similares a las listas (pueden contener números, cadenas, sub-tuplas, o nada). Son definidas con () Por ejemplo: T1 = (0, 1, 2, 3), T2 = (0 jose0 ,0 diana0 ), T3 = (0, 1, (2, 3),0 mario0 , (0 diana0 ,0 luis0 )), T4 = () El indexado funciona igual que en las listas y cadenas. Por ejemplo: T1[i], T1[i][j] Sólo que no es posible modificar los elementos de una tupla >>> T1[0]=5 Traceback (most recent call last): File “<stdin>”, line 1, in <module> TypeError: ’tuple’ object does not support item assignment La concatenación, repetición y obtención de tamaño funcionan igual que en las listas y cadenas Introducción a Python con ejemplos Estructuras de control Operadores: lógicos Operador and or not Descripción ¿se cumple a y b? ¿se cumple a o b? No a booleanos Operador == != < > <= >= Descripción ¿son iguales a y b? ¿son distintos a y b? ¿es a menor que b? ¿es a mayor que b? ¿es a menor o igual que b? ¿es a mayor o igual que b? Ejemplo True and False (False) True or False (True) not True (False) Ejemplo 5 == 3 (False) 5 != 3 (True) 5 < 3 (False) 5 > 3 (True) 5 <= 5 (True) 5 >= 3 (True) Introducción a Python con ejemplos Estructuras de control Sentencia if En Python, cualquier entero distinto de cero es True; cero es False. La condición puede ser una cadena o lista, incluso una secuencia; cualquiera con longitud distinta a cero es True, secuencias vacías son False. >>> x = int(input(“Escriba un entero: ”)) Escriba un entero: 42 . . . if x<0: ... s=’negativo’ . . . elif x==0: ... s=’cero’ . . . else : ... s=’positivo’ >>> s ’positivo’ Introducción a Python con ejemplos Estructuras de control Ciclo while El ciclo while ejecuta una condición mientras ésta sea verdadera. En Python, cualquier entero distinto de cero es True; cero es False. La condición puede ser una cadena o lista, incluso una secuencia; cualquiera con longitud distinta a cero es True, secuencias vacías son False. >>> a, b = 0, 1 #Asignación simultánea >>> while b<10: ... print(b) ... a, b = b, a+b #Asignación simultánea 1 1 2 3 5 8 Introducción a Python con ejemplos Estructuras de control Ciclo for En Python la sentencia for itera sobre los elementos de una secuencia en el orden en que aparecen >>> a = [’mi’, ’ciclo’, ’python’] >>> for x in a: ... print(x, len(x)) mi 2 ciclo 5 python 6 >>> for i in range(4): ... print(i) 0 1 2 3 Introducción a Python con ejemplos Estructuras de control Sentencias break, continue y pass break: al igual que en C, se sale del primer ciclo for o while que la encierra continue: al igual que en C, continúa con la siguiente iteración del primer ciclo for o while que la encierra pass: no hace nada. Se utiliza cuando sintácticamente se requiere una sentencia, pero el programa no requiere realizar acciones Introducción a Python con ejemplos Estructuras de control Definición de funciones I Podemos crear una función que escriba la serie de Fibonacci a un límite arbitrario: >>> def fib(n): ... a, b = 0, 1 ... while a<n: ... print(a, end=’ ’) ... a, b = b, a+b ... print() >>> fib(200): 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 Introducción a Python con ejemplos Estructuras de control Definición de funciones II Argumentos con valores por default: >>> def preg_ok(mensaje, reintentos=4, asegurar=’Si o no!’): ... while True: ... ok = input(mensaje) #Con in se prueba si una secuencia cuenta o no con cierto valor ... if ok in (’s’, ’si’, ’simon’): ... return True ... if ok in (’n’, ’no’, ’nop’, ’nel’): ... return False ... reintentos = reintentos − 1 ... if reintentos < 0: ... raise IOError(’rechazado’) ... print(asegurar) La función preg_ok tiene sólo un parámetro obligatorio (mensaje), si los demás se omiten se utilizan los valores por default. Introducción a Python con ejemplos Estructuras de control Definición de funciones III El concepto de funciones de más alto orden se refiere a utilizar funciones como si se tratara de un valor cualquiera Posibilitando el pasar funciones como parámetros de otras funciones o devolver funciones como valor de retorno Por ejemplo, la función filter requiere una función y una lista, y regresa una nueva lista que contiene sólo los valores de la lista original para los que la función regresó True. >>> nums = [1,3,5,10,20,30,2,4,11,6] >>> def es_menor(x): ... return x<=10: >>> filter(es_menor, nums) [1, 3, 5, 10, 2, 4, 6] Introducción a Python con ejemplos Estructuras de control Definición de funciones IV Otro ejemplo de funciones de más alto orden es map, la cual requiere una función y una (o más) lista (s), y regresa una lista donde la función dada fue aplicada a cada elemento de la lista (o listas). >>> nums = [2,4,10,30,50] >>> def agrega_uno(x): ... return x+1: >>> map(agrega_uno, nums) [3, 5, 11, 31, 51] Introducción a Python con ejemplos Estructuras de control Definición de funciones V Por último, la función reduce toma como parámetros una función, una lista y opcionalmente un valor inicial, y retorna un único valor. >>> nums = [1,2,3,10,20,30] >>> def add(x, y): ... return x+y: >>> reduce(add, nums) 66 Introducción a Python con ejemplos Estructuras de control Trabajo en clase: emular el funcionamiento de las funciones filter, map y reduce Introducción a Python con ejemplos Estructuras de datos Más sobre listas I >>> list.append(x) #Agrega un elemento al final de la lista >>> list.extend(L) #Agrega todos los L elementos a la lista >>> list.insert(i,x) #Inserta un elemento i en la posición x dada >>> list.remove(x) #Elimina el primer elemento de la lista cuyo valor sea x. Error si no existe dicho elemento. >>> list.pop(i) #Elimina el elemento de la posición dada, y lo regresa. Si no se especifica un índice (a.pop()) se elimina y retorna el último elemento de la lista. >>> list.index(x) #Regresa el índice del primer elemento de la lista cuyo valor es x. Error si no existe dicho elemento. >>> list.count(x) #Regresa el número de veces que x aparece en la lista >>> list.sort() #Ordena los elementos de la lista >>> list.reverse() #Invierte el orden de los elementos de la lista Introducción a Python con ejemplos Estructuras de datos Más sobre listas II >>> a = [66.25, 333, 333, 1, 1234.5] >>> print(a.count(333), a.count(66.25), a.count(’x’)) 210 >>> a.insert(2, -1) >>> a.append(333) [66.25, 333, -1, 333, 1, 1234.5, 333] >>> a.index(333) 1 >>> a.remove(333) [66.25, -1, 333, 1, 1234.5, 333] >>> a.reverse() [333, 1234.5, 1, 333, -1, 66.25] >>> a.sort() [-1, 1, 66.25, 333, 333, 1234.5] Introducción a Python con ejemplos Estructuras de datos Utilizando listas como pilas Los métodos vistos anteriormente hacen fácil el utilizar una lista como pila, en donde el último elemento agregado es el primero en salir >>> stack = [3, 4, 5] >>> stack.append(6) >>> stack.append(7) >>> stack [3, 4, 5, 6, 7] >>> stack.pop() 7 >>> stack [3, 4, 5, 6] >>> stack.pop() 6 >>> stack [3,4,5] Introducción a Python con ejemplos Estructuras de datos Utilizando listas como colas También es posible utilizar listas como colas, en donde el primer elemento agregado es el primero en salir Para implementar una cola se utiliza collections.deque el cual fue diseñado para agregar y quitar elementos rápidamente del principio y del final >>> from collections import deque >>> queue = deque([’Eric’, ’John’, ’Michael’]) >>> queue.append(’Terry’) >>> queue.append(’Graham’) >>> queue.popleft() ’Eric’ >>> queue.popleft() ’John’ >>> queue deque([’Michael’, ’Terry’, ’Graham’]) Introducción a Python con ejemplos Estructuras de datos Diccionarios I Las operaciones principales en los diccionarios son de almacenar un valor con una llave y recuperar dicho valor dando la llave. También es posible eliminar un par llave : valor con del. Si se almacena usando una llave que ya está en uso, el valor anterior se perderá. Es un error intentar extraer un valor utilizando una llave inexistente. Realizar list(d.keys()) en un diccionario retorna una lista con todas las llaves almacenadas. Para buscar una única llave en el diccionario usar in. Introducción a Python con ejemplos Estructuras de datos Diccionarios II >>> tel = ’jack’: 4098, ’sape’: 4139 >>> tel[’guido’] = 4127 >>> tel ’sape’: 4139, ’guido’: 4127, ’jack’: 4098 >>> tel[’jack’] 4098 >>> del tel[’sape’] >>> tel[’irv’] = 4127 >>> tel ’guido’: 4127, ’irv’: 4127, ’jack’: 4098 >>> list(tel.keys()) [’irv’, ’guido’, ’jack’] >>> sorted(tel.keys()) [’guido’, ’irv’, ’jack’] >>> ’guido’ in tel True >>> ’jack’ not in tel False Introducción a Python con ejemplos Estructuras de datos Continuará...