0% encontró este documento útil (0 votos)
243 vistas

Programacion Con Python PDF

Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
243 vistas

Programacion Con Python PDF

Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 47

Programación con Python

Docente: Fortunato Veliz

Sistemasuni
Python

• Python es un lenguaje de programación fácil


de aprender y potente. Dispone de eficaces
estructuras de datos de alto nivel y una
solución de programación orientada a objetos
simple pero eficaz.
• La elegante sintaxis de Python, su gestión de
tipos dinámica y su naturaleza interpretada
hacen de él el lenguaje ideal para guiones
(scripts) y desarrollo rápido de aplicaciones
en muchas áreas y en la mayoría de las
plataformas.
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 2
Python: un híbrido moderno

• Un lenguaje de scripting y prototipado


• Equilibrado entre extensibles y
poderosas pre construidas estructuras
de datos
• Genealogía:
– Setl (NYU, J.Schwartz et al. 1969-1980)
– ABC (Amsterdam, Meertens et al. 1980-)
– Python (Van Rossum et all. 1996-)
• Una comunidad open-source muy
activa
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153
Lenguajes Scripting
• Típicamente un lenguaje usado para programas
cortos para manejar otros programas.
• Interpretado, tipado dinámico, permisivo en la
semántica
• Usualmente minimalista en las declaraciones
• Usualmente compuesto por un conjunto rico de
operaciones con strings (el último dato no tipado)
• Fácil de interactuar con interfaces de Sistema
Operativo, archivos y manipulación de archivos
• Control de estructuras especializado:
– regular expressions – expresiones regulares (Perl)
– dictionaries - diccionarios (Python)

Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153
Python

• fue creado por Guido van Rossum


(http://www.python.org/~guido/)
• Da este nombre al lenguaje inspirado
por el popular grupo cómico británico
del espectáculo de la BBC ”Monty
Python's Flying Circus'' (el circo
ambulante de Monty Python)
• Guido creó Python durante unas
vacaciones de navidad en las que (al
parecer) se estaba aburriendo
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 5
Casos de éxito de Python

- BitTorrent (http://bitconjurer.org/BitTorrent/), sistema P2P que


ofrece mayor rendimiento que eMule
- ZOPE (www.zope.org) es un servidor de aplicaciones para
construir y gestionar contenido, intranets, portales, y
aplicaciones propietarias
- Google usa Python internamente, lo mismo que Yahoo para su
sitio para grupos
- Red Hat Linux utiliza Python para la instalación, configuración,
y gestión de paquetes.
- Más historias de éxito de Python en: http://pbf.strakt.com/
success

Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 6
Hola Mundo en Python

• Al igual que otros lenguajes de scripting se


ocupa el sha-bang(#!) para hacer el script
ejecutable.
#!/usr/bin/env python
print "Hola Mundo”

bien usamos el modo interactivo:


>>>print "Hola Mundo"
# "Hola Mundo"
>>>print "hola", "mundo"
# "hola mundo"
>>>print "Hola" + "Mundo"
# "HolaMundo"

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

• Python usa tabulación (o espaciado) para mostrar


estructura de bloques
– Tabula una vez para indicar comienzo de bloque
– Des-tabula para indicar el final del bloque

Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 10
Prototyping

• Enfocada en la programación experimental o


prototipos:
– Interactiva (como LISP, ML, etc).
– Mínima traducción a bytecode (como Java)
– Tipado dinámico (como LISP, SETL, APL)
– Funciones de alto orden (LISP)
– Recolector de basura, sin punteros (LISP, etc.)
– Tratamiento uniforme de estructuras indexadas
(como SETL)
– Estructuras asociativas pre construidas (como
SETL)
– Sintaxis liviana, identación es importante (de ABC)

Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153
Nada se puede entender sin OOP

• Modelo simple de módulos y clases


• Herencia de implementación
• No declaraciones de tipo, si herencia de
interfaces
• Herencia múltiple
• Sin información escondida
• Modelo simple de visibilidad
• Mecanismo “tosco” de sobrecarga de
operadores
• Anidamiento limitado:
– ambito preconstruido, ámbito global, ámbito
local
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153
¿Para qué [no] es útil?
• Python no es el lenguaje perfecto, no es bueno para:
– Programación de bajo nivel (system-programming), como
programación de drivers y kernels
• Python es de demasiado alto nivel, no hay control directo sobre
memoria y otras tareas de bajo nivel
– Aplicaciones que requieren alta capacidad de computo
• No hay nada mejor para este tipo de aplicaciones que el viejo C
• Python es ideal:
– Como lenguaje sticky/pegamento para combinar varios
componentes juntos (filosofía modular de UNIX-pipes)
– Para llevar a cabo prototipos de sistema
– Para la elaboración de aplicaciones cliente
– Para desarrollo web y de sistemas distribuidos
– Para el desarrollo de tareas científicas, en los que hay que
simular y prototipar rápidamente

Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 13
Usando Python desde línea comando

• Para arrancar el intérprete (Python interactivo) ejecutar:


$ python
Python 2.3.3 (#1, Dec 30 2003, 08:29:25)
[GCC 3.3.1 (cygwing special)] on cygwin
Type "help", "copyright", "credits" or "license" for more
information.
>>>
• Un comando simple:
>>> print "Hola Mundo"
Hola Mundo
>>>
• Para salir del intérprete Ctrl-D o Ctrl-Z (depende SO) o:
>>> import sys
>>> sys.exit()
$

Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 14
Sentencias y bloques

• Las sentencias acaban en nueva línea, no en ;


• Los bloques son indicados por tabulación que
sigue a una sentencia acabada en ':'.
bloque.py
name = “Juan1" # asignación de valor a variable
if name == “Juan":
print “Hola Juan"
else:
print "¿Quién eres?"
print "¡No eres Juan!"
$ python bloque.py
¿Quién eres?
¡No eres Juan!

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

• Numéricos (integer, long integer,


floating-point, and complex)
>>> x = 4
>>> int (x)
4
>>> long(x)
4L
>>> float(x)
4.0
>>> complex (4, .2)
(4+0.2j)

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

• El módulo string de la Python library define


métodos para manipulación de strings:
>>> import string
>>> s1 = 'La vida es mejor con Python'
>>> string.find(s1, 'Python')
21

• '%' es el operador de formateo de cadenas:


>>> region = ‘Tarapaca'
>>> "La capital de %s es %s" % (provincia, “Iquique")
'La capital de Tarapaca es Iquique'
– Los caracteres de formateo son los mismos que
en C, p.e. d, f, x
– Los String son “inmutables” y Python no tiene tipo
char

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?

• Iteradores pre construidos:


– for c in name: # c enlazado a cada caracter de name
– for course in courses:

rulers = { 'france': ['chirac', 1995, 7], # mapeo general


'us' : ['clinton', 1996, 4],
'peru' : ['fujimori', 1998, 0],
'romania' : ['illiescu', 2000, 5]}
for country in rulers.keys(): # iteradores pre construidos
[pres, elected, term] = rulers[country] # asignacion
if 2002 - elected <= term:
print country, ":", pres,"has %d years to go" % (term -
(2002 - elected))
else:
print country, ":", pres, "esta fuera de la oficina"

Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 27
Como se ve?

• Iteradores pre construidos:


– for c in name: # c enlazado a cada caracter de name
– for course in courses:

rulers = { 'france': ['chirac', 1995, 7], # mapeo general


'us' : ['clinton', 1996, 4],
'peru' : ['fujimori', 1998, 0],
'romania' : ['illiescu', 2000, 5]}
for country in rulers.keys(): # iteradores pre construidos
[pres, elected, term] = rulers[country] # asignacion
if 2002 - elected <= term:
print country, ":", pres,"has %d years to go" % (term -
(2002 - elected))
else:
print country, ":", pres, "esta fuera de la oficina"

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

• También podemos escribir


$ python
>>> import pres # carga, ejecuta, continua

Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153
Diccionarios

• Mapas asociativos de propósito General


dominios (claves) de tipos arbitrarios
• Entregandolo por clave:
>>rulers [‘peru’]
[‘fujimori’, 1998, 0]

• 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

• Operadores matemáticos, bit-a-bit y


relacionales: igual que C y Java
• Tiene operadores matemáticos
extendidos a strings (i.e. ’a’ + ’b’ --> ’ab’ o
’a’ * 3 --> ’aaa’)

• Nuevos operadores matemáticos: power


(**) y floor divition (//)
• Operadores booleanos: "or," "and," "not“
• Operadores relacionales: ==, >, <, =
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 31
Operadores

• Operador funcional: lambda


• Operadores de membresía e identidad:
in, not in, is, not is
• Operadores de subíndice, rango, tupla,
lista, diccionario, etc: x[], x[:],
(e1,e2...), [e1,e2...],
{key:dat,...}, etc
• Precedencia: lambda, lógicos,
membresía/identidad, relacionales, bit-
a-bit, matemáticos, subíndice, rango,
tupla, lista, diccionario, etc.
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 32
Control de Flujo

• Sacados del paradigma imperativo


• Definidos por el bloque de indentación y el
operador :
– if se puede utilizar con elif y else
– while se puede utilizar con else
– for funciona sobre sequencias, como listas,
strings,diccionarios, etc. Es similar a un
foreach (Perl).
• También existen los saltos incondicionales
implícitos mediante break y continue
– break nos sirve para salir de un bucle
– continue para seguir con la siguiente iteracion

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

• for se utiliza para iterar sobre los


miembros de una secuencia (for acepta
else)
– Se puede usar sobre cualquier tipo de datos
que sea una secuencia (lista, tupla,
diccionario)
for x in range(1,5):
print x

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

• Iteradores sobre colecciones:


for x in L:
• Iteradores sobre diccionarios:
for k in mydict.keys( ):
• Iteradores explícitos:
for x in [1, 1, 2, 3, 5, 8, 13]:
• Iteradores numéricos
for x in range (1,100):
Ej.
complex = { "uno" : 10.23+2j , " dos" :1.32+43j }
for i,j in complex.items() :
print i ,"= ",j
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153
Funciones

• Una definición de función es una


sentencia ejecutable.
• Objetos de primera clase que se ligan
en el espacio de nombres, definidos por
el bloque de indentación y el operador :
• Los parámetros son variables y pueden
tener valores por defecto
• Puede retornar más de un valor

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

• Nombres asignados son locales en vez de


declararlos globales

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

>>> print fib.__doc__


La serie de Fibonacci hasta n
>>>fib(2000)
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597

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

>>>testArgLists_1('aaa', 'bbb', arg1='ccc', arg2='ddd')


args: ('aaa', 'bbb')
kwargs: {'arg1': 'ccc', 'arg2': 'ddd'}

def testArgLists_2(arg0, *args, **kwargs):


print 'arg0: "%s"' % arg0
print 'args:', args
print 'kwargs:', kwargs

>>>testArgLists_2('un primer argumento', 'aaa', 'bbb',


arg1='ccc’, arg2='ddd')
arg0: "un primer argumento"
args: ('aaa', 'bbb')
kwargs: {'arg1': 'ccc', 'arg2': 'ddd‘}

Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 46
Fin

Sistemasuni
47

También podría gustarte