Clase04 Python
Clase04 Python
Powered by S5
Características Generales
• Lenguaje de Programación de alto nivel de propósito general.
• Énfasis en la legibilidad del código.
• Combina gran poder con sintaxis muy clara y limpia.
• Biblioteca estándar extensa y abarcativa.
• Multi paradigma: imperativo, orientado a objetos, funcional, reflectivo.
• Tipos dinámicos
• Manejo automático de memoria
• Lenguaje de scripting (no exclusivamente)
Historia
• Creado en 1989 por Guido van Rossum, en CWI (Holanda)
• Python 2.0: octubre 2000
• Puthon 2.6: octubre 2008.
• Python 3.0: diciembre 2008 (no compatible hacia atrás)
http://www.python.org/dev/peps/pep0020/
Utilización de python
• Aplicaciones web. mod_wsgi, mod_python
• Lenguaje de scripting embebido en diferentes productos.
• Componente estándar de las útlimas distribuciones linux. Varios utilitarios están escritos en python.
• Sugar Software (OLPC) está escrito en python.
• Usuarios: Yahoo, YouTube, CERN, NASA.
Instrucciones
• asignación
• decisión: ifthenelse
• iteración: for, while
Tipos de datos
• Numéricos:
• enteros: int, long, boolean
• reales: float
• complejos: complex
• Cadenas: string
• Secuencias: listas, tuplas, cadenas,
• Otros: diccionarios, conjuntos
Sistemas de tipos
• Python es un lenguaje interpretado con tipado dinámico.
• Fuertemente tipado
• Las variables no tienen tipo, los objetos sí.
• En tiempo de ejecución se verifica que el tipo de los operadores se aplique a los operandos.
• El programador puede definir sus propios tipos (clases)
Duck typing
"when I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird
a duck."
Ejemplo:
Instrucción de Asignación
La instrucción de asignación tiene esta forma:
identificador = expresión
altura = 0
y = x * 1
contador = contador + 1
Sintaxis de la Asignación
La BNF correspondiente a la instrucción de asignación:
Asignación en cadena
Se puede asignar el mismo valor a muchas variables:
a = b = c = d = 1
es equivalente a
a = 1
b = 1
c = 1
d = 1
Asignación en Paralelo
Se pueden realizar varias asignaciones en paralelo:
a,b = 0,1
a,b = b,a
a = b
b = a
La instrucción if
La instrucción if permite elegir entre dos bloques, de acuerdo con el resultado de una expresión:
if expresión:
bloque-1
else:
bloque-2
Ejemplo de if
Un ejemplo de programa que utiliza un if para determinar si un número es par o impar:
# ingreso dato
numero = input('numero: ')
if numero % 2 == 0:
resultado = 'par'
else:
resultado = 'impar'
# mostrar resultado
print 'El numero', numero, 'es', resultado
Semántica del if
La ejecución de
if expresión :
bloque-1
else :
bloque-2
1. evalúa expresión
2. si el resultado es True ejecuta bloque1
3. si el resultado es False ejecuta bloque2
Booleanos en Python
Para python todo valor se puede interpretar como boolean:
if e1:
S1
elif e2:
S3
elif ...
...
elif en:
Sn
else:
S
Ejemplo
Determinar si un año es bisiesto
if anio % 400 == 0:
print 'es bisiesto'
elif anio % 100 == 0:
print 'no es bisiesto'
elif anio % 4 == 0:
print 'es bisiesto'
else:
print 'no es bisiesto'
Instrucciones de repetición:
• Python tiene dos instrucciones de repetición:
• while : repetición controlada por una condición
• for: repetición asociada con una estructura de secuencia
Listas
Una lista es una secuencia de valores, separados por comas, entre corchetes
>>> a[0]
'spam'
>>> a[3]
1234
>>> a[-2]
100
>>> a[1:-1]
['eggs', 100]
Listas: mutabilidad
A diferencia de las cadenas, las listas son mutables
>>> a
['spam', 'eggs', 100, 1234]
>>> a
[1, 12, 123, 1234]
>>> # Remove some:
... a[0:2] = []
>>> a
[123, 1234]
>>> # Insert some:
... a[1:1] = ['bletch', 'xyzzy']
>>> a
[123, 'bletch', 'xyzzy', 1234]
La instrucción for
• Sirve para recorrer todos los elementos de una secuencia y ejecutar un bloque asociado con cada
elemento
Sintaxis de for
La instrucción for tiene esta forma:
Semántica de for
La ejecución de:
es equivalente a ejecutar:
v = x1; instrucción
v = x2; instruccion
...
v = xn; instrucción
La función range()
Permite construir una secuencia de valores consecutivos:
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(5, 10)
[5, 6, 7, 8, 9]
>>> range(0, 10, 3)
[0, 3, 6, 9]
>>> range(-10, -100, -30)
[-10, -40, -70]
Un clásico: factorial
• Calcular el factorial de un número N:
N = input('Numero: ')
factorial = 1
for i in range(2,N+1):
factorial *= i
print 'el factorial de', N, 'es', factorial
La instrucción while
La instrucción while permite repetir la ejecución de un bloque mientras una condición se mantiene
verdadera:
while expresión :
bloque
1. se evalúa la expresión
2. si el resultado es True se ejecuta bloque y se retorna al paso 1
3. si el resultado es False, termina la ejecución
break
from math import *
numero = input('Numero: ');
fin = floor(sqrt(numero))
for divisor in xrange(2,fin+1):
if numero % divisor == 0 :
print 'El numero', numero, 'no es primo'
break
else:
print 'El numero', numero, 'es primo'
Secuencias
En python se consideran secuencias varios tipos distintos:
• listas
• cadenas
• tuplas
Operaciones de secuencia
Operaciones comunes a todos los tipos secuenciales
Tuplas
Son muy similares a las listas, pero son inmutables
>>> u
((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))
>>> a.sort()
>>> a
[-1, 1, 66.25, 333, 333, 1234.5]
La instrucción del
Sirve para borrar un elemento de una lista según su índice. Es similar a pop pero no retorna el valor
>>> a
[1, 66.25, 333, 333, 1234.5]
>>> del a[2:4] # borrar una rebanada
>>> a
[1, 66.25, 1234.5]
>>> del a[:]
>>> a
[]
>>> del a # borrar la lista completa
Conjuntos
• Python incluye un tipo de datos para representar conjuntos.
• Los conjuntos no contienen elementos repetidos y sus elementos no tienen un orden secuencial
Conjuntos. Operaciones
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a # unique letters in a
set(['a', 'r', 'b', 'c', 'd'])
>>> a - b # letters in a but not in b
set(['r', 'd', 'b'])
>>> a | b # letters in either a or b
set(['a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'])
>>> a & b # letters in both a and b
set(['a', 'c'])
Diccionarios
Los diccionarios representan una correspondencia entre un conjunto de claves y un conjunto de valores. Las
claves son únicas y pueden ser de cualquier tipo inmutable (generalmente son string)
Recorrida de un diccionario
Se utilizan los iteradores: iteritems(), iterkeys(), itervalues()
Subprogrmas. Introducción
• Un subprograma es un fragmento de código que se comporta de manera independiente dentro de un
programa.
• Los subprogramas pueden ser invocados varias veces desde otras partes del programa.
Algunos identificadores pueden ser compartidos entre subprogramas y el programa principal (identificadores
globales).
Los subprogramas son una herramienta de modularización.
Ejemplo de Función
Una vez más: el factorial de un número:
def factorial(num):
"calcula el factorial de num"
facto = 1
for i in xrange(2,num+1):
facto *= i
return facto
def factorial(num):
facto = 1
for i in xrange(2,num+1):
facto *= i
return facto
for a in xrange(1,11):
print a,'! = ', factorial(a)
• nombre es un identificador
• argumentos es una lista de identificadores
• bloque debería contener una instrucción return
La instrucción return
Tiene esta forma:
return expresión
def divide(a,b):
"determina si a es divisor de b"
return (b % a == 0)
def AlgunoDivide(nums,Num):
"""determina si algún número de la lista nums
es divisor de Num """
for i in nums:
if divide(i,Num):
return True
return False
Ejemplo (continuación)
La función principal utiliza AlgunoDivide
def primos_hasta(Numero):
primos = []
for n in xrange(2,Numero+1):
if not AlgunoDivide(primos,n):
primos.append(n)
return primos
def primos_hasta(Numero=50):
...
>>> primos_hasta()
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
Argumentos por clave
• Es otra modalidad de pasar los argumentos a una función:
parrot(1000)
parrot(action = 'VOOOOOM', voltage = 1000000)
parrot('a thousand', state = 'pushing up the daisies')
parrot('a million', 'bereft of life', 'jump')
Programación Funcional
Módulos y paquetes
Bibliografía
• Sitio web: http://www.python.org/
• Tutorial Introduce informalmente los conceptos y propiedades básicas del lenguaje Python.
• Bibliotecas Describe todas las funciones y métodos de la librería estándar de python
• Referencia del Lenguaje Describe con precisión la sintaxis y semántica del lenguaje Python