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
[email protected]
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á...