introducción a python con ejemplos

Upload: aprender-libre

Post on 05-Apr-2018

236 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/31/2019 Introduccin a Python con ejemplos

    1/36

    Introduccin a Python con ejemplos

    Introduccin a Python con ejemplos

    Gerardo Montemayor-Garca

    Laboratorio de Tecnologas de la Informacin, CINVESTAV - Tamaulipas, ParqueCientfico y Tecnolgico TECNOTAM. Km. 5.5, carretera Cd. Victoria-Soto La

    Marina. Cd. Victoria, Tamaulipas, 87130, MXICO

    [email protected]

    15 de Noviembre del 2011

    http://find/
  • 7/31/2019 Introduccin a Python con ejemplos

    2/36

    Introduccin a Python con ejemplos

    1 Caractersticas

    2 Ejecutando cdigo Python

    3 Introduccin informal a Python

    4 Estructuras de control

    5 Estructuras de datos

    http://find/
  • 7/31/2019 Introduccin a Python con ejemplos

    3/36

    Introduccin a Python con ejemplos

    Caractersticas

    Caractersticas 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 fciles deaprender.

    Desarrollo rpido de aplicaciones en muchas reas en la mayorade las plataformas.

    Los programas en Python son comnmente ms cortos que susequivalentes en C, C++ o Java

    Es posible agregar extensiones desarrolladas en C o C + +.

    Manejo de memoria automtico.

    http://www.python.org/http://www.python.org/http://find/
  • 7/31/2019 Introduccin a Python con ejemplos

    4/36

    Introduccin a Python con ejemplos

    Caractersticas

    Caractersticas II

    Es un lenguaje de programacin multiparadigma: POO,Programacin Imperativa y Programacin Funcional.

    Otros paradigmas estn soportados mediante el uso deextensiones.

    Python usa tipado dinmico y es fuertemente tipado.

    Python es OO. Soporta conceptos como polimorfismo,sobrecarga de operadores y herencia mltiple.

    Resolucin dinmica de nombres (ligadura dinmica demtodos).

    Tiempos de ejecucin en http://shootout.alioth.debian.org/

    http://shootout.alioth.debian.org/http://shootout.alioth.debian.org/http://find/
  • 7/31/2019 Introduccin a Python con ejemplos

    5/36

    Introduccin a Python con ejemplos

    Ejecutando cdigo Python

    Ejecutando cdigo Python I

    Llamar al interprete Python puede variar dependiendo de laplataforma.

    Comnmente lo encontramos como /usr/local/bin/python.

    En un sistema basado en unix todo lo que se debe de hacer estipear en la lnea de comandos1:

    :$ python

    Despus de un breve mensaje aparecer el smbolo >>>, lo culindica que ha iniciado el interprete.

    Para salir del interprete teclear ctrl + D, o escribir exit().

    Nuestro hello world!:>>> print(hello world)

    hello world!1Si ya se ha configurado la variable de entorno

    d h l

    http://find/
  • 7/31/2019 Introduccin a Python con ejemplos

    6/36

    Introduccin a Python con ejemplos

    Ejecutando cdigo Python

    Ejecutando cdigo Python II

    Los scripts de Python pueden ser escritos en archivos de textoutilizando el sufijo .py.

    El interprete puede leer scripts de diferente manera:

    Ejecutar el script y retornar el resultado en la terminal$ python script.pyLa opcin -i deja abierta la terminal despus de ejecutar elscript$ python -i script.py

    El comando execfile lee y ejecuta el script como si hubiesesido escrito directamente en el interprete$ >>> execfile(script.py)Ejecuta el script enviando parmetros de entrada2

    $ python script.py param1 param2 param3

    2Mas adelante habr ms detalles sobre el paso de parmetros

    I t d i P th j l

    http://find/
  • 7/31/2019 Introduccin a Python con ejemplos

    7/36

    Introduccin a Python con ejemplos

    Introduccin informal a Python

    Utilizando Python como calculadora I

    Los enteros son implementados como los long de C

    >>> 2 + 24

    >>> #Comentario:>>> 2 + 2 #Comentario en la misma lnea4

    >>> (50 5 6)/45.0

    >>> 8/5 #Divisin entre enteros devuelve enteros1.0

    >>> 999999999999999999999L #Un long integer debe terminaren l o L

    I t d i P th j l

    http://find/http://goback/
  • 7/31/2019 Introduccin a Python con ejemplos

    8/36

    Introduccin a Python con ejemplos

    Introduccin informal a Python

    Utilizando Python como calculadora II

    Divisin con flotantes devuelve flotantes

    >>> 8.0/51.6

    >>> 8.0//5 #La doble // fuerza el resultado a la funcin piso1.0

    Los flotantes son implementados como los double de C

    >>> 0. + 1.0 + 1e10 + 3.14e 2 + 6.99E410000069901.031401

    El signo = se utiliza para asignar valores a las variables

    >>> width = 20>>> height = 5 9>>> width * height900

    Introduccin a Python con ejemplos

    http://find/http://goback/
  • 7/31/2019 Introduccin a Python con ejemplos

    9/36

    Introduccin a Python con ejemplos

    Introduccin informal a Python

    Utilizando Python como calculadora III

    Un valor puede ser asignado a muchas variablessimultneamente>>> x = y = z = 0>>> x

    0>>> y0>>> z0

    En el modo interactivo, la ltima impresin es asignada a lavariable _>>> 500.5 31501.5>>> _+ 2

    1503.5

    Introduccin a Python con ejemplos

    http://find/http://goback/
  • 7/31/2019 Introduccin a Python con ejemplos

    10/36

    Introduccin a Python con ejemplos

    Introduccin informal a Python

    Utilizando Python como calculadora IV

    Las variables deben de ser definidas (se les debe asignar unvalor) antes de que puedan ser utilizadas

    >>> nTraceback (most recent call last):

    File , line 1, in NameError: name n is not defined

    Python tambin soporta nmeros complejos

    >>> 2 + 3j #(real + imaginarioj)(2+3j)

    >>> complex(0,1) #complex(real + imaginarioj)(2+3j)

    Introduccin a Python con ejemplos

    http://find/http://goback/
  • 7/31/2019 Introduccin a Python con ejemplos

    11/36

    Introduccin a Python con ejemplos

    Introduccin informal a Python

    Utilizando Python como calculadora V

    Tambin es posible realizar operaciones con nmeros complejos

    >>> 3 + 1j * 3(3+3j)

    >>> a = 1.5+0.5j>>> a.real1.5

    >>> a.imag0.5

    >>> float(a)Traceback (most recent call last):File , line 1, in

    TypeError: cant convert complex to float

    >>> abs(a) #sqrt(a.real**2 + a.imag**2)

    1.5811388300841898

    Introduccin a Python con ejemplos

    http://find/http://goback/
  • 7/31/2019 Introduccin a Python con ejemplos

    12/36

    Introduccin a Python con ejemplos

    Introduccin informal a Python

    Strings

    El manejo de cadenas en Python tambin es interesante

    >>> abcDEFabcDEF

    >>> abcDEF #Con doble comilla el texto puede extenderse sobremltiples lneasabcDEF

    >>> a=abcdef>>> len(a) #Longitud de la cadena en a6

    Concatenacin y repeticin

    >>> abc+def #Concatenacinabcdef

    >>> abc*3 #Repeticin

    abcabcabc

    Introduccin a Python con ejemplos

    http://find/http://goback/
  • 7/31/2019 Introduccin a Python con ejemplos

    13/36

    y j p

    Introduccin informal a Python

    Indexado y rebanado I

    Python inicia indexando en 0. Una cadena s tiene desde el ndice0 hasta len(s) 1 (donde len(s) es el tamao de s) en cantidadesenteras.

    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 (noincluido)>>> s[1:4]ade

    s[: j] obtiene todos los elementos hasta la posicin j 1>>> s[:4]

    cade

    Introduccin a Python con ejemplos

    http://find/http://goback/
  • 7/31/2019 Introduccin a Python con ejemplos

    14/36

    y j p

    Introduccin informal a Python

    Indexado y rebanadas I

    s[i :] obtiene todos los elementos de i en adelante (incluyndolo)

    >>> s[2:]denas

    s[i : j : k] obtiene cada kth elemento iniciando en i (inlcusivo) yfinalizando en j (no inclusivo)>>> s[0:5:2]cdn

    Python tambin soporta indices negativos. Por ejemplo, s[1]

    significa extraer el primer elemento de s del final (igual ques[len(s) 1])>>> s[-1]s

    >>> s[-3]

    n

    Introduccin a Python con ejemplos

    http://find/http://goback/
  • 7/31/2019 Introduccin a Python con ejemplos

    15/36

    y j p

    Introduccin informal a Python

    Listas I (operaciones bsicas)

    Las listas pueden contener nmeros, cadenas, sub-listas, o nada.Son definidas con []

    Por ejemplo: L1 = [0, 1, 2, 3], L2 = [jose, diana],L3 = [0, 1, [2, 3], mario, [diana, luis]], 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]

    Concatenacin: L1 + L2

    Introduccin a Python con ejemplos

    http://find/http://goback/
  • 7/31/2019 Introduccin a Python con ejemplos

    16/36

    Introduccin informal a Python

    Listas II (operaciones bsicas)

    Repeticin: L1 3

    Aadir (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]

    Introduccin a Python con ejemplos

    http://find/http://goback/
  • 7/31/2019 Introduccin a Python con ejemplos

    17/36

    Introduccin informal a Python

    Listas III (operaciones bsicas)

    Eliminar ndices (L2=[1,2,3,4]):>>> del L2[2][1,2,4]>>> L2[1:3]=[]

    [1]Re-asignacin de rebanadas (L2=[1,2,3,4,5]):>>> L2[1:4]=[9,9,9][1, 9, 9, 9, 5]

    Listas automticas 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]

    Introduccin a Python con ejemplos

    http://find/http://goback/
  • 7/31/2019 Introduccin a Python con ejemplos

    18/36

    Introduccin informal a Python

    Tuplas

    Las tuplas son muy similares a las listas (pueden contenernmeros, cadenas, sub-tuplas, o nada). Son definidas con ()

    Por ejemplo: T1 = (0, 1, 2, 3), T2 = (jose, diana),T3 = (0, 1, (2, 3), mario, (diana, luis)), T4 = ()

    El indexado funciona igual que en las listas y cadenas. Porejemplo: T1[i], T1[i][j]

    Slo que no es posible modificar los elementos de una tupla

    >>> T1[0]=5

    Traceback (most recent call last):File , line 1, in

    TypeError: tuple object does not support item assignment

    La concatenacin, repeticin y obtencin de tamao funcionanigual que en las listas y cadenas

    Introduccin a Python con ejemplos

    http://find/http://goback/
  • 7/31/2019 Introduccin a Python con ejemplos

    19/36

    Estructuras de control

    Operadores:

    lgicosOperador Descripcin Ejemplo

    and se cumple a y b? True and False (False)or se cumple a o b? True or False (True)not No a not True (False)

    booleanosOperador Descripcin Ejemplo== son iguales a y b? 5 == 3 (False)

    != son distintos a y b? 5 != 3 (True)< es a menor que b? 5 < 3 (False)> es a mayor que b? 5 > 3 (True)= 3 (True)

    Introduccin a Python con ejemplos

    http://find/http://goback/
  • 7/31/2019 Introduccin a Python con ejemplos

    20/36

    Estructuras de control

    Sentencia if

    En Python, cualquier entero distinto de cero es True; cero es False.

    La condicin puede ser una cadena o lista, incluso unasecuencia; cualquiera con longitud distinta a cero es True,secuencias vacas son False.

    >>> x = int(input(Escriba un entero: ))Escriba un entero: 42

    . . . if x>> spositivo

    Introduccin a Python con ejemplosE d l

    http://find/http://goback/
  • 7/31/2019 Introduccin a Python con ejemplos

    21/36

    Estructuras de control

    Ciclo while

    El ciclo while ejecuta una condicin mientras sta sea verdadera.

    En Python, cualquier entero distinto de cero es True; cero es False.

    La condicin puede ser una cadena o lista, incluso unasecuencia; cualquiera con longitud distinta a cero es True,secuencias vacas son False.>>> a, b = 0, 1 #Asignacin simultnea>>> while b

  • 7/31/2019 Introduccin a Python con ejemplos

    22/36

    Introduccin a Python con ejemplosEstructuras de control

  • 7/31/2019 Introduccin a Python con ejemplos

    23/36

    Estructuras de control

    Sentencias break, continue y pass

    break: al igual que en C, se sale del primer ciclo for o while que

    la encierracontinue: al igual que en C, contina con la siguiente iteracindel primer ciclo for o while que la encierra

    pass: no hace nada. Se utiliza cuando sintcticamente se requiere

    una sentencia, pero el programa no requiere realizar acciones

    Introduccin a Python con ejemplosEstructuras de control

    http://find/http://goback/
  • 7/31/2019 Introduccin a Python con ejemplos

    24/36

    Estructuras de control

    Definicin de funciones I

    Podemos crear una funcin que escriba la serie de Fibonacci aun lmite arbitrario:

    >>> def fib(n):. . . a, b = 0, 1. . . while a>> fib(200):0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597

    Introduccin a Python con ejemplosEstructuras de control

    http://find/http://goback/
  • 7/31/2019 Introduccin a Python con ejemplos

    25/36

    Estructuras de control

    Definicin 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 funcin preg_ok tiene slo un parmetro obligatorio(mensaje), si los dems se omiten se utilizan los valores por

    default.

    Introduccin a Python con ejemplosEstructuras de control

    http://find/
  • 7/31/2019 Introduccin a Python con ejemplos

    26/36

    Estructuras de control

    Definicin de funciones III

    El concepto de funciones de ms alto orden se refiere a utilizarfunciones como si se tratara de un valor cualquiera

    Posibilitando el pasar funciones como parmetros de otras

    funciones o devolver funciones como valor de retornoPor ejemplo, la funcin filter requiere una funcin y una lista, yregresa una nueva lista que contiene slo los valores de la listaoriginal para los que la funcin regres True.

    >>> nums = [1,3,5,10,20,30,2,4,11,6]>>> def es_menor(x):. . . return x>> filter(es_menor, nums)[1, 3, 5, 10, 2, 4, 6]

    Introduccin a Python con ejemplosEstructuras de control

    http://find/http://goback/
  • 7/31/2019 Introduccin a Python con ejemplos

    27/36

    st ct s de co t o

    Definicin de funciones IV

    Otro ejemplo de funciones de ms alto orden es map, la cualrequiere una funcin y una (o ms) lista (s), y regresa una lista

    donde la funcin dada fue aplicada a cada elemento de la lista (olistas).

    >>> nums = [2,4,10,30,50]>>> def agrega_uno(x):. . . return x+1:

    >>> map(agrega_uno, nums)[3, 5, 11, 31, 51]

    Introduccin a Python con ejemplosEstructuras de control

    http://find/http://goback/
  • 7/31/2019 Introduccin a Python con ejemplos

    28/36

    Definicin de funciones V

    Por ltimo, la funcin reduce toma como parmetros una

    funcin, una lista y opcionalmente un valor inicial, y retorna unnico valor.

    >>> nums = [1,2,3,10,20,30]>>> def add(x, y):. . . return x+y:>>> reduce(add, nums)66

    Introduccin a Python con ejemplosEstructuras de control

    http://find/http://goback/
  • 7/31/2019 Introduccin a Python con ejemplos

    29/36

    Trabajo en clase:

    emular el funcionamiento de las funciones filter, map y reduce

    Introduccin a Python con ejemplosEstructuras de datos

    http://find/http://goback/
  • 7/31/2019 Introduccin a Python con ejemplos

    30/36

    Ms 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 posicin x dada>>> list.remove(x) #Elimina el primer elemento de la lista cuyo valor seax. Error si no existe dicho elemento.>>> list.pop(i) #Elimina el elemento de la posicin dada, y lo regresa. Sino se especifica un ndice (a.pop()) se elimina y retorna el ltimo elemento dela 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 nmero 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

    Introduccin a Python con ejemplosEstructuras de datos

    http://find/http://goback/
  • 7/31/2019 Introduccin a Python con ejemplos

    31/36

    Ms sobre listas II

    >>> a = [66.25, 333, 333, 1, 1234.5]>>> print(a.count(333), a.count(66.25), a.count(x))2 1 0>>> 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]

    Introduccin a Python con ejemplosEstructuras de datos

    http://find/
  • 7/31/2019 Introduccin a Python con ejemplos

    32/36

    Utilizando listas como pilas

    Los mtodos vistos anteriormente hacen fcil el utilizar una listacomo pila, en donde el ltimo elemento agregado es el primeroen 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]

    Introduccin a Python con ejemplosEstructuras de datos

    http://find/http://goback/
  • 7/31/2019 Introduccin a Python con ejemplos

    33/36

    Utilizando listas como colas

    Tambin es posible utilizar listas como colas, en donde el primerelemento agregado es el primero en salir

    Para implementar una cola se utiliza collections.deque el cual fuediseado para agregar y quitar elementos rpidamente 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>>> queuedeque([Michael, Terry, Graham])

    Introduccin a Python con ejemplosEstructuras de datos

    http://find/
  • 7/31/2019 Introduccin a Python con ejemplos

    34/36

    Diccionarios I

    Las operaciones principales en los diccionarios son de almacenarun valor con una llave y recuperar dicho valor dando la llave.

    Tambin es posible eliminar un par llave : valor con del.

    Si se almacena usando una llave que ya est en uso, el valoranterior se perder.

    Es un error intentar extraer un valor utilizando una llaveinexistente.

    Realizar list(d.keys()) en un diccionario retorna una lista contodas las llaves almacenadas.

    Para buscar una nica llave en el diccionario usar in.

    Introduccin a Python con ejemplosEstructuras de datos

    http://find/
  • 7/31/2019 Introduccin a Python con ejemplos

    35/36

    Diccionarios II

    >>> tel = jack: 4098, sape: 4139>>> tel[guido] = 4127>>> telsape: 4139, guido: 4127, jack: 4098>>> tel[jack]

    4098>>> del tel[sape]>>> tel[irv] = 4127>>> telguido: 4127, irv: 4127, jack: 4098>>> list(tel.keys())[irv, guido, jack]>>> sorted(tel.keys())[guido, irv, jack]>>> guido in telTrue >>> jack not in tel

    False

    http://find/
  • 7/31/2019 Introduccin a Python con ejemplos

    36/36