Programacion Con Python PDF
Programacion Con Python PDF
Sistemasuni
Python
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153
Python
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 6
Hola Mundo en Python
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 7
Características de Python
• Muy legible y elegante
– Imposible escribir código ofuscado
• Simple y poderoso
– Minimalista: todo aquello innecesario no hay que escribirlo (;, {, },
'\n')
– Muy denso: poco código hace mucho
– Soporta objetos y estructuras de datos de alto nivel: strings, listas,
diccionarios, etc.
– Múltiples niveles de organizar código: funciones, clases, módulos,
y paquetes
• Python standard library
(http://www.python.org/doc/current/lib/lib.html) contiene
clases de utilidad
– Si hay áreas que son lentas se pueden reemplazar por plugins en
C o C++, siguiendo la API para extender o empotrar Python en una
aplicación, o a través de herramientas como SWIG, sip o Pyrex.
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 8
Características de Python II
• De scripting
– No se tiene que declarar constantes y variables antes de utilizarlas
– No requiere paso de compilación/enlazador
– La primera vez que se ejecuta un script de Python se compila y genera
bytecode que es luego interpretado
– Alta velocidad de desarrollo y buen rendimiento
• Código interoperable (como en Java "write once run everywhere")
– Se puede utilizar en múltiples plataforma (más aún que Java)
– Puedes incluso ejecutar Python dentro de una JVM (Jython)
• Open Source
– Razón por la cual la Python Library sigue creciendo y creciendo
• De propósito general
– Puedes hacer en Python todo lo que puedes hacer con C# o Java, o
más
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 9
Peculiaridades sintácticas
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 10
Prototyping
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153
Nada se puede entender sin OOP
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 13
Usando Python desde línea comando
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 14
Sentencias y bloques
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 15
Identificadores
• Los identificadores sirven para nombrar variables,
funciones y módulos
– Deben empezar con un carácter no numérico y
contener letras, números y '_‘
– Python es case sensitive
• Palabras reservadas:
– and elif global or assert else if pass break except
import print class exec in raise continue finally is return
def for lambda try del from not while
• Variables y funciones delimitadas por __
corresponden a símbolos implícitamente definidos:
__name__ nombre de función
__doc__ documentación sobre una función
__init__() constructor de una clase
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 16
Tipos de datos
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 17
Operadores
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 18
Tipos de datos I
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 19
Tipos de datos II
• Strings, delimitados por un par de (', " ,"""). Dos string juntos sin
delimitador se unen
>>> print "Hi" "there"
Hithere
– Los códigos de escape se expresan a través de '\':
>>>print '\n‘
– Raw strings (sin procesar string “en bruto”)
>>> print r'\n\\' # no se 'escapa' \n
– Es lo mismo ' que ", p.e. "\\[foo\\]" r'\[foo\]‘
>>> len('La vida es mucho mejor con Python.')
>>> 34
>>> 'La vida es mucho mejor con Python.'.upper()
'LA VIDA ES MUCHO MEJOR CON PYTHON.'
>>> "La vida es mucho mejor con Python".find("Python")
27
>>> 'La vida es mucho mejor con Python'.replace('Python', 'Jython')
'La vida es mucho mejor con Jython’
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 20
Tipos de datos III
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 21
Tipos de datos IV
• Listas []
– Indexadas por un entero comienzan en 0 (soporta
indexación negativa):
>>> meses = ["Enero", "Febrero"]
>>> print meses[0]
Enero
>>> #de atrás para adelante -1 feberero -2 enero
print meses[-2]
Enero
>>> meses.append("Marzo")
>>> print meses
['Enero', 'Febrero', 'Marzo']
– Más (+) es el operador de concatenación:
>>> print meses+meses
['Enero', 'Febrero', 'Marzo', 'Enero', 'Febrero‘,'Marzo']
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 22
Tipos de datos IV
• Las listas pueden contener cualquier tipo de objetos Python:
>>> meses.append (meses)
>>> print meses
['Enero', 'Febrero', 'Marzo', ['Enero', 'Febrero', 'Marzo' ]]
>>> meses.append(1)
['Enero', 'Febrero', 'Marzo', ['Enero', 'Febrero', 'Marzo' ], 1]
• Para añadir un elemento a una lista:
>>> items = [4, 6]
>>> items.insert(0, -1)
>>> items
[-1, 4, 6]
• Para usar una lista como una pila, se pueden usar append y pop:
>>> items.append(555)
>>> items [-1, 4, 6, 555]
>>> items.pop()
555
>>> items [-1, 4, 6]
• Lista por comprensión:
mylist = [x*x for x in range(3)]
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 23
Funciones para listas
• len ( l i s t )
• del l i s t [ x : y ]
• l i s t . extend ( l )
• list.insert(i,x)
• l i s t . remove ( x )
• l i s t . count ( x )
• list.sort()
• l i s t . reverse ( )
• l i s t . append ( x ) # Pi l a y Cola
• l i s t . pop ( ) # Pi l a
• l i s t . pop ( 0 ) # Cola
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 24
Slicing
– Dos puntos (:) es el operador de rodajas o Slice,
– permite trabajar con una porción de la lista, el elemento indicado
por el segundo parámetro no se incluye:
>>> print meses[1:2]
['Febrero']
• Slicing/rodajas:
– s[m:n]
• del m-avo componente, al final pero excluir el n-avo
– s [m:]
• del m-avo al final,
– s[:n]
• del comienzo, al final pero excluir el n-avo
– s[:]
• todos los componentes
– s*4
• repeticiones
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 25
Tipos de datos V
• Tuplas (), lo mismo que listas, pero con pares de valores , e.j. (1, 2)
• Diccionarios {} arrays asociativos o mapas, indexados por una clave,
la cual puede ser cualquier objeto Python, aunque normalmente es
una tupla:
>>> mydict = {"altura" : "media", "habilidad" : "intermedia",
"salario" : 1000 }
>>> print mydict
{altura': 'media', 'habilidad': 'intermedia', 'salario': 1000}
>>> print mydict["habilidad"]
intermedia
– Puedes comprobar la existencia de una clave en un diccionario usando
has_key:
if mydict.has_key('altura'):
print 'Nodo encontrado'
– Lo mismo se podría hacer:
if 'altura' in mydict:
print 'Nodo encontrado'
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 26
Como se ve?
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 27
Como se ve?
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153
Simple interactive model
$ python pres.py # carga y ejecuta
france: chirac has 0 years to go
us: clinton esta fuera de la oficina
romania: illiescu has 3 years to go
peru: fujimori esta fuera de la oficina
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153
Diccionarios
• asignación / modificación
>>> rulers ["peru"][2]=10 //ver 2.2
>>> rulers ["mexico"] = ["fox", 2000, 6]
>>> rulers ["pakistan"] = [ ] #no requiere consistencia tipo
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153
Operadores
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 33
Control de Flujo
q = 4
h = 5
if q < h :
print "primer test pasado"
else:
print "segundo test pasado"
>>> python condicional.py
primer test pasado
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 34
Control de Flujo: bucles
• while es sentencia de repetición. Ejecuta un bloque
de código hasta que una condición es falsa.
• Por ejemplo:
reply = 'repite'
while reply == 'repite':
print 'Hola'
reply = raw_input('Introduce "repite" para
hacerlo de nuevo: ')
Hola
Introduce "repite" para hacerlo de nuevo:
repite
Hola
Introduce "repite" para hacerlo de nuevo:
adiós
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 35
Control de flujo
def fun(number = 23):
running = True
while running:
guess = int(raw_input("Ingrese un numero: " ))
if guess == number:
print "Correcto!"
running = False
elif guess < number :
print "Incorrecto , es mayor"
else:
print "Incorrecto , es menor"
else:
print "Termino el Loop."
print "Termino el programa"
raw_input ("Pulse enter para salir: " )
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 36
While con salto incondicional
>>> while True:
s = raw_input ("Ingrese String : " )
if s == “quit" :
break
if len(s) > 3:
continue
print "Tiene que ser mas largo"
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 37
Control de Flujo: bucles
1 2 3 4
• La función range genera una secuencia
descrita por ([start,] end [,step]), donde los
campos start y step son opcionales. Start
es 0 y step es 1 por defecto.
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 38
Control de Flujo: bucles
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 40
Sintaxis
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 41
Funciones
def intersect (seq1, seq2): # sin info de tipo
res = [ ] # inicializando lista
for x in seq1: # iterando sobre la lista
if x in seq2: # miembro pre construido
res.append (x)
return res
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153
Funciones
def fib(n):
"""La serie de Fibonacci hasta n"""
a, b = 0, 1
while b < n:
print b,
a, b = b, a+b
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 43
Funciones
• Una función se declara usando la palabra clave def
def myfunc(a,b):
sum = a + b
return sum
>>> print myfunc (5,6)
11
• A una función se le pueden asignar parámetros por
defecto:
def myfunc(a=4,b=6):
sum = a + b
return sum
>>>print myfunc()
10
>>>print myfunc(b=8)
12
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 44
Ejemplo de Valores por Defecto
def ask_ok(prompt, retries=4, complaint='Yes or no,
please!'):
while True:
ok = raw_input(prompt)
if ok in ('y', 'ye', 'yes'): return True
if ok in ('n', 'no', 'nop', 'nope'): return False
retries = retries - 1
if retries < 0: raise IOError, 'refusenik user'
print complaint
• Podemos llamarla
>>>ask_ok('Hola: ')
>>>ask_ok('Chao: ',complaint='en gringo yes/no')
>>>ask_ok('Prompt ',1,"nada")
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 45
Funciones: n° párametros variable
• Listas de argumentos y argumentos basados en palabras
clave:
def testArgLists_1(*args, **kwargs):
print 'args:', args
print 'kwargs:', kwargs
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 46
Fin
Sistemasuni
47