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

Python 01

Este documento describe las características y usos del lenguaje de programación Python. Python es un lenguaje interpretado, de tipado dinámico y con una sintaxis simple pero poderosa. Se utiliza comúnmente para scripts, desarrollo rápido de aplicaciones y tareas científicas.
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)
114 vistas

Python 01

Este documento describe las características y usos del lenguaje de programación Python. Python es un lenguaje interpretado, de tipado dinámico y con una sintaxis simple pero poderosa. Se utiliza comúnmente para scripts, desarrollo rápido de aplicaciones y tareas científicas.
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/ 45

Programación con Python

Instructor: Ing. 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
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 4
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 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

• 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 7
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 9
Compiladores e Interprete

Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 10
Instalar Python e IDE

• Descargar la última versión de Python (3.8.x)


e instalar de:

https://www.python.org/downloads/

• Descargar IDE Visual Studio Code e instalar


de:

https://code.visualstudio.com/download

Departamento de Uni
Sistemas Informática
Lenguajes de Programación ILI-153 11
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 12
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 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

• 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 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

• 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 = ‘La Libertad'
>>> "La capital de %s es %s" % (region, “Trujillo")
'La capital de La Libertad es Trujillo'
– 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 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?

• 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 28
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 29
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 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

• 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 35
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 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

• 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 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

>>>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 43
Gracias

Sistemasuni
44
Demos

Sistemasuni

También podría gustarte