Introducción a Python
D. Fernandez Slezak (dfslezak@[Link])
Facultad de Ciencias Exactas y Naturales, UBA - CONICET
D. Fernandez Slezak (CONICET-UBA) Intro a Python 1 / 26
En el curso
En este curso vamos a usar Python, pero no es un curso de Python.
D. Fernandez Slezak (CONICET-UBA) Intro a Python 2 / 26
En el curso
En este curso vamos a usar Python, pero no es un curso de Python.
Es una lenguaje interpretado (Hay un programa traduciendo cada comando que
se introduce a un montón de operaciones en lenguaje de máquina).
D. Fernandez Slezak (CONICET-UBA) Intro a Python 2 / 26
En el curso
En este curso vamos a usar Python, pero no es un curso de Python.
Es una lenguaje interpretado (Hay un programa traduciendo cada comando que
se introduce a un montón de operaciones en lenguaje de máquina).
Python tiene las siguientes caracterı́sticas:
Gratis
Multi-plataforma
Se usa por todos lados
Muy bien documentado
Con muy buen nivel de soporte y comunidad de usuarios
Para aprender Python (o cualquier otro lenguaje de programación), hay que
perder tiempo. Hay mucha información en Internet, pero hasta que uno no se
ensucia los dedos, la cosa no avanza No hay recetas mágicas!
D. Fernandez Slezak (CONICET-UBA) Intro a Python 2 / 26
El intérprete
La opción inicial para usar Python es utilizar directamente el intérprete.
Directamente se tipean los comandos y se obtiene la respuesta.
Para ver si todo funciona correcto, se puede hacer:
>>> p r i n t ( ” h o l a mundo \n ” )
h o l a mundo
el {\n} sirve para pasar al renglón siguiente).
D. Fernandez Slezak (CONICET-UBA) Intro a Python 3 / 26
Editando texto
La otra manera de interactuar con Python es crear un archivo de texto con los
comandos que queremos que ejecute.
D. Fernandez Slezak (CONICET-UBA) Intro a Python 4 / 26
Editando texto
La otra manera de interactuar con Python es crear un archivo de texto con los
comandos que queremos que ejecute.
El intérprete va a ir leyendo el archivo y ejecutando de a un comando por vez.
Esto termina cuando se han ejecutado todos los comandos o cuando explota por
haber encontrado un error.
D. Fernandez Slezak (CONICET-UBA) Intro a Python 4 / 26
Editando texto
La otra manera de interactuar con Python es crear un archivo de texto con los
comandos que queremos que ejecute.
El intérprete va a ir leyendo el archivo y ejecutando de a un comando por vez.
Esto termina cuando se han ejecutado todos los comandos o cuando explota por
haber encontrado un error.
python mi super [Link]: es la manera más sencilla de ejecutar el script
recientemente creado (hay otra maneras que vamos a ir aprendiendo con el
tiempo).
D. Fernandez Slezak (CONICET-UBA) Intro a Python 4 / 26
Editando texto
La otra manera de interactuar con Python es crear un archivo de texto con los
comandos que queremos que ejecute.
El intérprete va a ir leyendo el archivo y ejecutando de a un comando por vez.
Esto termina cuando se han ejecutado todos los comandos o cuando explota por
haber encontrado un error.
python mi super [Link]: es la manera más sencilla de ejecutar el script
recientemente creado (hay otra maneras que vamos a ir aprendiendo con el
tiempo).
Se puede usar el editor de texto que más les guste.
Los freaks usan vi. Funciona en una consola.
Si no hay otra cosa, podes arreglarte con nano. Funciona en consola.
El mcedit es un editor muy completo, si sos lo suficientemente viejo y nerd, puede que
te traiga recuerdos. También funciona en consola.
En el entorno gnome/unity, geany o sublime están buenos.
Si tenes KDE o cosas de KDE instalado, podes usar kate o kwrite.
D. Fernandez Slezak (CONICET-UBA) Intro a Python 4 / 26
Otros entornos
Consola alternativa con esteroides: IPython
D. Fernandez Slezak (CONICET-UBA) Intro a Python 5 / 26
Otros entornos
Entorno simil Matlab: spyder
D. Fernandez Slezak (CONICET-UBA) Intro a Python 6 / 26
Otros entornos
Hı́brido entre las dos anteriores: IPython Notebook / jupyter notebook
D. Fernandez Slezak (CONICET-UBA) Intro a Python 7 / 26
Instalando paquetes
La herramienta principal para instalación de paquetes es: pip
[Link]
1 Bajar [Link]
2 Ejecutar python [Link]
3 Si no tienen permisos, se puede hacer solo para el usuario: python [Link]
--user
4 Una vez instalado, está listo para usar. Por ejemplo, para actualizar el propio pip:
pip install -U pip
5 Instalación de entornos y consolas: pip install ipython jupyter spyder
D. Fernandez Slezak (CONICET-UBA) Intro a Python 8 / 26
Ejercicios
Escribir el programa Hola mundo en:
1 Consola python
2 Consola ipython
3 Spyder
4 jupyter notebook
>>> p r i n t ( ” h o l a mundo \n ” )
h o l a mundo
D. Fernandez Slezak (CONICET-UBA) Intro a Python 9 / 26
La asignación
Operación para modificar el valor de una variable.
Sintaxis: variable = expresión
D. Fernandez Slezak (CONICET-UBA) Intro a Python 10 / 26
La asignación
Operación para modificar el valor de una variable.
Sintaxis: variable = expresión
Efecto de la asignación:
1 Se evalúa la expresión de la derecha y se obtiene un valor.
2 El valor obtenido se copia en el espacio de memoria de la variable.
Ejemplos:
x=1
y=x
x=x+x
x=funcion(z+1,3)
x= x*x + 2*y + z;
Se pueden poner comentarios se usa el numeral (#). Es una buena práctica de
programación que vamos a incentivar.
D. Fernandez Slezak (CONICET-UBA) Intro a Python 10 / 26
Tipos
Todos los valores tienen un tipo de datos asociado.
Las variables no tienen un tipo de datos, depende del valor que almacena.
Python determina automáticamente el tipo de las variables.
Los tipos básicos (i.e. predefinidos) son:
Números: enteros (int), con coma (float), complejos(complex, por ejemplo 2 + 6j).
Cadenas de texto o cadenas de caracteres (se declaran encerrando los caracteres
entre comillas dobles)
Valores booleanos: True (verdadero) y False (falso).
Se puede determinar el tipo de datos asociado a un valor o a una variable con la
función type.
D. Fernandez Slezak (CONICET-UBA) Intro a Python 11 / 26
Operaciones básicas con números
Suma (+), r = 3 + 2
Resta (-), r = 4 - 7
Negación (-), r = -r
Multiplicación (*), r = 2 * 6
Potencia (**), r = 2 ** 6
División (/), r = 3.5 / 2
División entera (//), r = 3.5 // 2
Módulo o resto ( %), r = 7 % 2
D. Fernandez Slezak (CONICET-UBA) Intro a Python 12 / 26
Operaciones booleanas
Se cumple A y B: and, True and False
Se cumple A o B: or, True or False
Negación: not, not True
Igualdad (==), r = 5 == 3
No son iguales (!=), r = 5!= 3
Menor (<), r = 5 < 3
Mayor (>), r = 5 > 3
Mayor o Igual (>=) / Menor o igual (<=), r = 5 <= 5
D. Fernandez Slezak (CONICET-UBA) Intro a Python 13 / 26
Estructuras de control
Condicional (if ... else ...)
Ciclos (for, while ...)
Funciones
Retorno de control (return)
Aunque muchos lenguajes imperativos permiten implementar funciones recursivas, el
mecanismo fundamental de cómputo no es la recursión.
D. Fernandez Slezak (CONICET-UBA) Intro a Python 14 / 26
Estructura de control if condición lógica,
if condición lógica... else,
if condición lógica ... elseif condición lógica ...else
Es la estructura más sencilla para hacer un programa interesante.
D. Fernandez Slezak (CONICET-UBA) Intro a Python 15 / 26
Estructura de control if condición lógica,
if condición lógica... else,
if condición lógica ... elseif condición lógica ...else
Es la estructura más sencilla para hacer un programa interesante.
i f A>=6:
p r i n t ( ” Aprobado ” )
D. Fernandez Slezak (CONICET-UBA) Intro a Python 15 / 26
Estructura de control if condición lógica,
if condición lógica... else,
if condición lógica ... elseif condición lógica ...else
Es la estructura más sencilla para hacer un programa interesante.
i f A>=6:
p r i n t ( ” Aprobado ” )
Esta es la versión larga del if:
i f A>=6:
p r i n t ( ” Aprobado ” )
else :
p r i n t ( ” Coloquio o Desaprobado ” )
Ojo! La manera de indicar bloques de instrucciones es por medio de la tabulación.
D. Fernandez Slezak (CONICET-UBA) Intro a Python 15 / 26
Estructura de control if condición lógica,
if condición lógica... else,
if condición lógica ... elseif condición lógica ...else
Es la estructura más sencilla para hacer un programa interesante.
i f A>=6:
p r i n t ( ” Aprobado ” )
Esta es la versión larga del if:
i f A>=6:
p r i n t ( ” Aprobado ” )
else :
p r i n t ( ” Coloquio o Desaprobado ” )
Ojo! La manera de indicar bloques de instrucciones es por medio de la tabulación.
i f A>=6:
p r i n t ( ” Aprobado ” )
e l i f A>=4:
p r i n t ( ” Coloquio ” )
else :
p r i n t ( ” Hasta e l Pr \ ’ oximo C u a t r i m e s t r e ” )
D. Fernandez Slezak (CONICET-UBA) Intro a Python 15 / 26
Iterando: while condición lógica
contador = 0
while c o n t a d o r < 1 8 :
p r i n t ( ” Vamos por , ” + s t r ( c o n t a d o r ) )
¿Cuál es la salida de este código?
D. Fernandez Slezak (CONICET-UBA) Intro a Python 16 / 26
Iterando: while condición lógica
contador = 0
while c o n t a d o r < 1 8 :
p r i n t ( ” Vamos por , ” + s t r ( c o n t a d o r ) )
¿Cuál es la salida de este código?
Y sı́, me habı́a olvidado de incrementar el contador, deberı́a ser ası́:
contador = 0
while c o n t a d o r < 1 8 :
p r i n t ( ” Vamos por , ” + s t r ( c o n t a d o r ) )
c o n t a d o r = c o n t a d o r +1
D. Fernandez Slezak (CONICET-UBA) Intro a Python 16 / 26
Iterando: while condición lógica
contador = 0
while c o n t a d o r < 1 8 :
p r i n t ( ” Vamos por , ” + s t r ( c o n t a d o r ) )
¿Cuál es la salida de este código?
Y sı́, me habı́a olvidado de incrementar el contador, deberı́a ser ası́:
contador = 0
while c o n t a d o r < 1 8 :
p r i n t ( ” Vamos por , ” + s t r ( c o n t a d o r ) )
c o n t a d o r = c o n t a d o r +1
La tabulación puede ser una fuente de errores muy molestos, hay que tener mucho
cuidado, la versión que termina es:
contador = 0
while c o n t a d o r < 1 8 :
p r i n t ( ” Vamos por , ” + s t r ( c o n t a d o r ) )
c o n t a d o r = c o n t a d o r +1
D. Fernandez Slezak (CONICET-UBA) Intro a Python 16 / 26
Iterando con for
Es muy similar al while, pero se encarga de incrementar el ı́ndice en un cierto rango
directamente.
f o r c o n t a d o r i n range ( 1 , 100 , 1 ) :
hacemos algo ( c o n t a d o r )
La función range te devuelve un rango desde 1 hasta 100 con un salto de 1.
Ya vamos a ver cosas más divertidas con estas estructuras.
D. Fernandez Slezak (CONICET-UBA) Intro a Python 17 / 26
Iterando con for
Es muy similar al while, pero se encarga de incrementar el ı́ndice en un cierto rango
directamente.
f o r c o n t a d o r i n range ( 1 , 100 , 1 ) :
hacemos algo ( c o n t a d o r )
La función range te devuelve un rango desde 1 hasta 100 con un salto de 1.
Ya vamos a ver cosas más divertidas con estas estructuras.
D. Fernandez Slezak (CONICET-UBA) Intro a Python 18 / 26
Usando el intérprete Python
En la terminal escribo el comando:
python
Puedo comenzar a ejecutar instrucciones python en la lı́nea de comandos. en el caso
de las estructuras de control tengo que identar.
D. Fernandez Slezak (CONICET-UBA) Intro a Python 19 / 26
Probando código
Si tenemos un archivo con una función.
def r e t u r n s u m ( x , y ) :
c = x + y
return c
res = return sum ( 4 , 5 )
print ( res )
D. Fernandez Slezak (CONICET-UBA) Intro a Python 20 / 26
Probando código
Si tenemos un archivo con una función.
def r e t u r n s u m ( x , y ) :
c = x + y
return c
res = return sum ( 4 , 5 )
print ( res )
linea 1 return sum(x,y): def es palabra reservada, return sum es el nombre del
módulo, x, y son las variables de entrada
se ejecuta con python return [Link]
D. Fernandez Slezak (CONICET-UBA) Intro a Python 20 / 26
Probando código
Si tenemos un archivo con una función.
def r e t u r n s u m ( x , y ) :
c = x + y
return c
res = return sum ( 4 , 5 )
print ( res )
linea 1 return sum(x,y): def es palabra reservada, return sum es el nombre del
módulo, x, y son las variables de entrada
se ejecuta con python return [Link]
D. Fernandez Slezak (CONICET-UBA) Intro a Python 20 / 26
Probando más código
Caso en que el número de entradas no puede determinarse *args.
def m e d i a a r i t m e t i c a ( * args ) :
sum = 0 . 0
f o r x i n args :
sum += x
r e t u r n sum / f l o a t ( len ( args ) )
print ( media aritmetica (45 ,32 ,89 ,78))
print ( media aritmetica (8989.8 ,78787.78 ,3453 ,78778.73))
print ( media aritmetica (45 ,32))
print ( media aritmetica (45))
print ( media aritmetica ( ) )
D. Fernandez Slezak (CONICET-UBA) Intro a Python 21 / 26
Usando el debugger
Lo invocamos con python -m pdb mi super [Link].
En lugar de ejecutar el script, se va a parar en la primera lı́nea y nos va a mostrar
el prompt del pdb.
(Pdb)
Algunos comandos:
n o next: ejecuta una instrucción.
p, pp o print: imprime en pantalla el valor actual de un sı́mbolo.
l o list: muestra la lı́nea actual que está siendo ejecutada junto con algunas lı́neas
extras de contexto.
c o continue: ejecuta hasta que finalice el programa o hasta que se encuentre con un
breakpoint.
b o break: pone un breakpoint en el punto especificado del programa (puede ser una
lı́nea de código o una función).
D. Fernandez Slezak (CONICET-UBA) Intro a Python 22 / 26
Errores
Mensajes de error
File [Link], line 1
print "Hola, mundo"
^
SyntaxError: invalid syntax
Los mensajes de error de Python se muestran en tiempo de ejecución utilizando
un mecanismo llamado excepciones.
La información que podemos ver es el lugar en donde ocurrió el error, el tipo de
excepción, y un mensaje de error.
Las excepciones son formas de reportar errores que el programador puede utilizar
y manejar (o atrapar) de alguna manera. Ahora no nos vamos a meter con esto.
Si nadie hace nada con ellas, el programa explota como se ve en el ejemplo.
D. Fernandez Slezak (CONICET-UBA) Intro a Python 23 / 26
Errores
Más mensajes de error
Traceback (most recent call last):
File "./[Link]", line 120, in <module>
eval([Link][1])(*[Link][2:])
File "./[Link]", line 91, in biglans_all_metrics
__generic_all_metrics(’[Link]’, size)
File "./[Link]", line 27, in __generic_all_metrics
random_costs_all = [__computecost(na,
[Link](size_int)) for x in xrange(size_int**2)]
File "./[Link]", line 230, in getRandomPermutation
return random_permutation([Link], n)
File "./[Link]", line 82, in random_permutation
return tuple([Link](pool, r))
File "/usr/lib/python2.7/[Link]", line 322, in sample
raise ValueError("sample larger than population")
ValueError: sample larger than population
D. Fernandez Slezak (CONICET-UBA) Intro a Python 24 / 26
Errores Intérprete Python
Algunos comandos para acortar camino
CTRL + L limpiar comandos de python
CTRL + D o quit() o exit() salir del intérprete a la terminal
CTRL + Z fuerza a salir del intérprete.
D. Fernandez Slezak (CONICET-UBA) Intro a Python 25 / 26
Errores Intérprete Python
Terminando
Con lo que vimos hoy, podemos hacer programas bastante piolas y practicar
bastante.
D. Fernandez Slezak (CONICET-UBA) Intro a Python 26 / 26
Errores Intérprete Python
Terminando
Con lo que vimos hoy, podemos hacer programas bastante piolas y practicar
bastante.
Resumiendo:
Intérprete Python
Editando y ejecutando código Python
Asignación de variables
Tipos de datos
Operaciones básicas
Estructuras de control: if, then, else
Iteración: while, for
Definiendo funciones
Debugging
D. Fernandez Slezak (CONICET-UBA) Intro a Python 26 / 26
Errores Intérprete Python
Terminando
Con lo que vimos hoy, podemos hacer programas bastante piolas y practicar
bastante.
Resumiendo:
Intérprete Python
Editando y ejecutando código Python
Asignación de variables
Tipos de datos
Operaciones básicas
Estructuras de control: if, then, else
Iteración: while, for
Definiendo funciones
Debugging
Ahora hay que ensuciarse los dedos y empezar a practicar
Entregar al menos 2 puntos resueltos de cada ejercicio de la práctica 1.
(Avisar antes de empezar el ejercicio 4)
D. Fernandez Slezak (CONICET-UBA) Intro a Python 26 / 26