Python 01
Python 01
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 5
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 6
Peculiaridades sintácticas
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 7
Nada se puede entender sin OOP
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 9
Compiladores e Interprete
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 10
Instalar Python e IDE
https://www.python.org/downloads/
https://code.visualstudio.com/download
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 11
Usando Python desde línea comando
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 12
Sentencias y bloques
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 13
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 14
Tipos de datos
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 15
Operadores
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 16
Tipos de datos I
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 17
Tipos de datos II
• Strings, delimitados por un par de (', " ,"""). Dos string juntos sin
delimitador se unen
>>> print("Hola" “Maria“)
HolaMaria
– Los códigos de escape se expresan a través de '\':
>>>print('\n‘) cambio de linea
– 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 18
Tipos de datos III
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 19
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 20
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 21
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 22
Dos puntos
– 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 23
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 24
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 30
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 31
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 32
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 33
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 34
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 35
Control de Flujo: bucles
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 37
Sintaxis
Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 38
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 40
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 41
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 42
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 43
Gracias
Sistemasuni
44
Demos
Sistemasuni