Presentación Python
Presentación Python
22 Marzo 2023
MÓDULO PYTHON
22 Marzo 2023
1. Elementos básicos del lenguaje
3
1.1 Ejecución en Anaconda
En esta Sección introducimos los tipos básicos del lenguaje Python, así como los
conceptos de variable y asignación.
Ejecución en Anaconda:
Anaconda ofrece una herramienta de ejecución interactiva con la cual es posible dar
órdenes directamente al intérprete y obtener una respuesta inmediata para cada una
de ellas.
4 4
1.1 Ejecución en Anaconda
Veamos algunos ejemplos:
5 5
1.1 Ejecución en Anaconda
La tabla siguiente tabla resume las características de los operadores Python: su
aridad (número de operandos), asociatividad y precedencia.
6 6
1.1 Ejecución en Anaconda
Veamos algunos ejemplos:
7 7
1.1 Ejecución en Anaconda
En ocasiones deseamos que el ordenador recuerde ciertos valores para usarlos
más adelante. Necesitamos introducir el concepto de variable. Por ejemplo,
supongamos que deseamos efectuar el cálculo del perímetro de un círculo de radio
1.298373.
Podemos imprimir por el valor de la variable perímetro. Para ello hacemos uso de la
función print de Python:
8 8
1.1 Ejecución en Anaconda
En la celda anterior hemos utilizado una función predefinada de python.
Se trata de la función print. Como ves, sirve para mostrar el contenido de una
variable.
9 9
1.1 Variables:
Una variable es un espacio para almacenar datos en la memoria de un ordenador.
En Python, una variable se define con la sintaxis:
nombre_de_la_variable = valor_de_la_variable
Cada variable, tiene un nombre y un valor. Así podemos almacenar un valor en una
variable y posteriormente podemos utilizar dicha variable en otras expresiones. A
esta acción de asignar un valor a una variable se denomina asignación.
Por cuestiones de estilo, las variables suelen empezar con minúscula. Podéis
consultar la guía de estilo para código escrito en Python en el siguiente enlace
https://www.python.org/dev/peps/pep-0008/
10 10
1.2 Variables:
Algunos nombres no pueden ser usados como nombres de variables (son palabras
reservadas por python):
and, as, assert, break, class, continue, def, del, elif, else, except, exec, finally, for, from, global,
if, import, in, is, lambda, not, or, pass, print, raise, return, try, while, with, yield.
Pero las órdenes que puede ejecutar el intérprete de Python no son únicamente operaciones
aritméticas y asignaciones. También puede ejecutar funciones.
11 11
1.3 Los tipos de datos en Python: Tipo entero
Python es un lenguaje de tipado dinámico: el tipo se determina en el momento de la
asignación. Cada variable, tiene un nombre y un valor. El valor define también el tipo
de datos de la variable.
Para conocer el tipo de una variable podemos ejecutar la función type de Python.
12 12
1.3 Los tipos de datos en Python
Las divisiones por cero lanzan un error:
Las operaciones entre enteros son, generalmente, más rápidas que las operaciones
con reales. Así pues, utilizaremos enteros a menos que de verdad necesitemos
números con decimales.
13 13
1.3 Los tipos de datos en Python: Aritmética de coma
flotante
Los valores de tipo real se representan mediante el punto, separando así la parte
entera de la parte decimal. Estos valores decimos que son de tipo float.
14 14
1.3 Los tipos de datos en Python: Aritmética de coma
flotante
A continuación mostramos un ejemplo sencillo con variables y operadores
aritméticos:
15 15
1.3 Los tipos de datos en Python: Funciones y Casting
de tipos
Python proporciona funciones que podemos utilizar en las expresiones. Estas
funciones se dice que están predefinidas (como la función print):
16 16
1.3 Los tipos de datos en Python: Funciones y Casting
de tipos
Podemos convertir expresiones a int, float, bool, str mediante funciones:
17 17
1.3 Los tipos de datos en Python: Tipo de datos Boolean
Las constantes booleanas son True y False.
Los operadores booleanos son los habituales, and para la conjunción, or para la
disyunción y not para la negación.
18 18
1.3 Los tipos de datos en Python: Tipo de datos Boolean
Continuamos con las constantes booleanas son True y False.
== igual a
!= distinto de
< menor que
<= menor o igual que
19 19
1.3 Los tipos de datos en Python: Tipo de datos Boolean
Operadores de Comparación
20 20
1.3 Los tipos de datos en Python: Tipo de datos Boolean
Operadores de Comparación
21 21
1.3 Los tipos de datos en Python: Tipo de datos Boolean
OpeEl valor True se corresponde con el valor entero 1, mientras que el valor False
se corresponde con el valor entero 0. Así, es posible realizar operaciones
aritméticas con valores booleanos.
22 22
1.3 Los tipos de datos en Python: El tipo cadena de
caracteres
Mucha gente usa Python por sus capacidades para el tratamiento y procesamiento
de cadenas. Las cadenas de caracteres, el tipo str en Python , se corresponde con
el tipo String de otros lenguajes. En Python 3.7 el tipo cadena es UNICODE por
defecto.
23 23
1.3 Los tipos de datos en Python: El tipo cadena de
caracteres
Para conocer el tamaño de una cadena, se utiliza la función len como se muestra a
continuación:
24 24
1.3 Los tipos de datos en Python: Caracteres especiales
Caracteres especiales.
25 25
1.3 Los tipos de datos en Python: Formateando cadenas
Formateando cadenas:
El uso del símbolo % seguido de uno o más caracteres de formato permiten
controlar con precisión la construcción de cadenas. Por ejemplo, creamos una
cadena:
Operadores de formato
26 26
1.3 Los tipos de datos en Python: Formateando cadenas
27 27
2.2 Las funciones en Python (I)
28
2.1 Las funciones en Python (I)
• También tienen una lista de argumentos. Dichos parámetros pueden ser de varios
tipos:
- posicionales
- por clave
- argumentos agrupados
29 29
2.2 Funciones con argumentos posicionales
Podemos utilizar la función anterior para sumar los números 4, 2 y 3. Para ello basta
con escribir el nombre la función junto con los valores 4, 2 y 3 como argumentos. A
esto se le conoce como llamada a la función o invocar a la función:
30 30
2.2 Funciones con argumentos posicionales
Cuando se define una función, se crea una variable con el mismo nombre cuyo valor
tiene tipo function. Así, si se introduce únicamente el nombre de una función sin
paréntesis se imprime información de la función en vez de ejecutarse.
A las funciones se les puede añadir comentarios, para lo cual basta incluir una
cadena entre la primera línea (nombre de la función) y el cuerpo usando tiple
comillas dobles ( """).:
31 31
2.2 Funciones con argumentos posicionales
Vemos ejemplo:
32 32
2.2 Funciones con argumentos posicionales
Continuamos con el ejemplo:
33 33
2.3 Funciones con argumentos por clave
Los argumentos por clave se usan para indicar valores por defecto y siempre se
sitúan después de los argumentos posicionales. De esta forma podemos crear una
función que puede ser invocada con menos argumentos de los que permite.
Esta función puede ser invocada pasando sólo los argumentos obligatorios x e y :
Esta función puede ser invocada pasando los argumentos obligatorios x e y junto
con un argumento por clave:
34 34
2.3 Funciones con argumentos por clave
Esta función puede ser invocada pasando los argumentos obligatorios x e y junto
con los dos argumento por clave:
35 35
2.4 Valores devueltos por una función
Una función puede tener varias instrucciones return. Si la ejecución de una función
no alcanza ninguna instrucción return, se devuelve None que es el valor que
representa el valor nulo en Python. El tipo de None es NoneType.
36 36
2.4 Valores devueltos por una función
La ejecución de una función termina en el momento en el cual se alcance una
instrucción return.
37 37
2.4 Valores devueltos por una función
Las funciones Python pueden devolver múltiples valores. Aquí tenemos otra de las
características que hace a Python atractivo a los programadores.
38 38
2.5 Semántica de Python
A diferencia de otros lenguajes como C++, Java o Perl, Python no utilliza corchetes
o llaves para estructurar el código. Python utiliza espacios en blanco o tabulaciones
para dar estructura a su código.
39 39
2.5 Semántica de Python
Si el sangrado no es correcto, el intérprete de Python emitirá un error de sintaxis
indicándolo.
40 40
2.3 Estructuras de datos en Python
41
2.1 Las secuencias en Python: Tuplas y Listas
Python posee además de los tipos de datos básicos, otros tipos de datos más
complejos. Se trata de las tuplas, las listas y los diccionarios. Estos tres tipos,
pueden almacenar colecciones de datos de diversos tipos y se diferencian por su
sintaxis y por la forma en la cual los datos pueden ser manipulados.
Tuplas
Una tupla es un tipo de datos que representa una secuencia de valores de cualquier
tipo a los cuales se puede acceder mediante índices enteros. Las tuplas se
caracterizan porque son inmutables (no pueden ser modificadas una vez creadas) y
comparables.
Desde el punto de vista sintáctico, una tupla se define mediante una lista de valores
separados por comas y encerradas entre paréntesis.
42 42
2.1 Las secuencias en Python: Tuplas y Listas
En la siguiente celda creamos una tupla de 4 elementos llamada t:
43 43
2.1 Las secuencias en Python: Tuplas y Listas
Podemos saber cuántos elementos tienen con la función len:
44 44
2.1 Las secuencias en Python: Tuplas y Listas
Listas
Una lista es similar a una tupla con la diferencia fundamental de que puede ser
modificada una vez creada. Se trata de un tipo de datos mutable y contiene datos
heterogéneos.
Para crear una lista se encierra los valores que forman la lista entre corchetes.
45 45
2.1 Las secuencias en Python: Tuplas y Listas
Algunas operaciones sobre listas son la operación + para concatenar listas:
Como se puede observar, la función sorted devuelve una nueva lista ordenada
dejando a la original intacta.
46 46
2.1 Las secuencias en Python: Tuplas y Listas
También es posible construir listas de varias dimensiones:
También es posible añadir nuevos valores a las listas mediante la función append.
47 47
2.1 Las secuencias en Python: Generando listas
Generando listas
Python 2.7 proporciona la función predefinida range(inicio, fin, paso) para generar
listas automáticamente. En Python 3.7 no se genera una lista; se genera un objeto
iterable. Decimos que un objeto es iterable si se puede recorrer para recuperar
cada uno de los elementos que contiene. En este sentido, las listas son iterables y
las tuplas también.
48 48
2.1 Las secuencias en Python: Acceso a los elementos
de las secuencias
[<inicio>:<final>:<salto>]
En Python, la indexación empieza por CERO
49 49
2.1 Las secuencias en Python: Acceso a los elementos
de las secuencias
En el caso de las listas, podemos modificar los datos almacenados.
50 50
2.1 Las secuencias en Python: Acceso a los elementos
de las secuencias
Otra forma de acceder a una secuencia es de forma inversa (de atrás hacia
adelante), colocando un índice negativo.
51 51
2.1 Las secuencias en Python: Desempaquetar
secuencias
Desempaquetar secuencias
En muchos casos es interesante asignar nombre a cada uno de los elementos de
las secuencias para, posteriormente, trabajar con esos elementos..
52 52
2.1 Las secuencias en Python: Operaciones sobre listas
53 53
2.1 Las secuencias en Python: Operaciones sobre listas
Para eliminar elementos de una lista, podemos utilizar los métodos pop y remove.
54 54
2.1 Las secuencias en Python: Eliminando por posición
55 55
2.1 Las secuencias en Python: Eliminación por valor
56 56
2.1 Las secuencias en Python: Ordenando una lista
Para ordenar una lista podemos usar el método sort. Esta operación permite
ordenar una lista sin necesidad de crear una lista nueva, por lo que la operación es
muy eficiente.
57 57
2.1 Las secuencias en Python: Inversa de una lista
58 58
2.2 Un caso particular de secuencias: Las secuencias de
caracteres- str
Las cadenas son consideradas como una secuencia de caracteres y por tanto
pueden ser tratadas como tuplas.
Por ejemplo, podemos acceder a cada uno de los caracteres de una cadena:
Las cadenas en Python son inmutables. Eso quiere decir que no es posible
modificar una cadena sin crear otra nueva.
59 59
2.1 Las secuencias en Python: Ordenando una lista
Para ver todas las funciones que podemos utilizar con cadenas basta con ejecutar la
siguiente celda:
More
60 60
2.1 Las secuencias en Python: Ordenando una lista
Algunos ejemplos:
61 61
2.4 Estructuras de control
62
2.1 Estructuras de control: Instrucciones if, elif, else
Python soporta las sentencias de control de flujo que podemos encontrar en otros
lenguajes de programación.
63 63
2.1 Estructuras de control: Instrucciones if, elif, else
Cuando ponemos los dos puntos al final de la primera línea del condicional, todo lo
que vaya a continuación con un nivel de sangrado superior se considera dentro del
condicional.
En cuanto escribimos la primera línea con un nivel de sangrado inferior, hemos
cerrado el condicional.
64 64
2.1 Estructuras de control: Instrucciones if, elif, else
La instrucción pass no hace nada. Se puede usar cuando la sintaxis obliga a escribir
al menos una instrucción pero el programa no necesita ninguna acción.
65 65
2.1 Estructuras de control: Instrucciones if, elif, else
66 66
2.2 Estructuras de control: Instrucciones Expresiones
ternarias
Expresiones ternarias
Las expresiones ternarias en Python tienen la siguiente forma:
67 67
2.3 Estructuras de control: Bucles for y while
El bucle for
La instrucción for de Python itera sobre los elementos de cualquier secuencia (una
tupla, una lista o una cadena de texto), en el orden que aparecen en la secuencia.
Se utiliza para recorrer una colección completa de elementos, es decir pasa a través
de cada elemento.
Aquí el objeto <iterable_object> puede ser una lista, tupla, array, etc.
El bucle se repite un número fijo de veces, que es la longitud de la colección de
elementos.
68 68
2.3 Estructuras de control: Bucles for y while
69 69
2.3 Estructuras de control: Bucles for y while
El bucle anterior ejecuta el cuerpo del bucle 5 veces. En este caso decimos que se
han realizado 5 iteraciones.
70 70
2.3 Estructuras de control: Bucles for y while
71 71
2.3 Estructuras de control: Bucles for y while
En el caso de los diccionarios podemos iterar también sobre las claves y sobre los
valores.
72 72
2.3 Estructuras de control: Bucles for y while
El Bucle while
while <condition>:
<cuerpo del bucle>
En el siguiente ejemplo, el cuerpo del bucle está compuesto por dos instrucciones.
El cuerpo del bucle se ejecutará mientras la condición asociada al while, i < 5 , sea
cierta.
73 73
2.3 Estructuras de control: Bucles for y while
Como regla y para evitar bucles infinitos, debemos asegurarnos de que, en cada
iteración, la condición del while está más cerca de hacerse cierta. En el ejemplo
anterior, en el cuerpo del bucle se incrementa la variable i, por lo que cada vez el
valor de i se aproxima más a 5.
74 74
2.3 Estructuras de control: Bucles for y while
En Python también existe la instrucción que nos permite interrumpir el bucle antes
de que la condición se haga falsa. Se trata de la instrucción break:
75 75
2.3 Estructuras de control: La función enumerate
La función enumerate
Cuando trabajamos con secuencias de elementos puede resultar útil conocer el
índice de cada elemento. La función enumerate devuelve una secuencia de tuplas
de la forma (i, valor).
76 76
2.5 Los diccionarios de Python
77
2.1 Los diccionarios de Python
Características:
78 78
2.2 Los diccionarios de Python: Crear un diccionario
Crear un diccionario
De la misma forma que con listas, es posible definir un diccionario directamente con
los miembros que va a contener, o bien inicializar el diccionario vacío y luego
agregar los valores.
79 79
2.2 Los diccionarios de Python: Crear un diccionario
cadenas,
enteros,
tuplas (con valores inmutables en sus miembros), etc.
80 80
2.2 Los diccionarios de Python: Crear un diccionario
Los valores de un diccionario pueden ser de cualquier tipo: listas, cadenas, tuplas,
otros diccionarios, objetos, etc.
Otra forma de crear un diccionario es declararlo vacío y luego insertar los valores.
Se declara el diccionario vacío, y luego se asignan valores directamente a las
claves.
81 81
2.2 Los diccionarios de Python: Crear un diccionario
82 82
2.2 Los diccionarios de Python: Acceso a los elementos
de un diccionario
Acceso a los elementos de un diccionario
Las claves son únicas dentro de un diccionario, es decir que no puede haber un
diccionario que tenga dos veces la misma clave. Si se asigna un valor a una clave
ya existente, se reemplaza el valor anterior.
83 83
2.2 Los diccionarios de Python: Acceso a los elementos
de un diccionario
Si se intenta acceder a una clave que no está en el diccionario, el acceso falla.
Para evitar este tipo de errores, podemos usar la función in, que comprueba si un
elemento está en el diccionario o utilizar el método get(), que devuelve el valor None
si la clave no está en el diccionario.
84 84
2.3 Los diccionarios de Python: Eliminar elementos de
un diccionario
Eliminar elementos de un diccionario
Para eliminar elementos de un diccionario se utiliza el método pop() con la clave que
se desea eliminar:
85 85
2.4 Los diccionarios de Python: Otros métodos para la
gestión de diccionarios
Otros métodos para la gestión de diccionarios
El método keys() devuelve una lista con las claves del diccionario. El método
values() devuelve una lista con los valores del diccionario.
86 86
2.4 Los diccionarios de Python: Otros métodos para la
gestión de diccionarios
Para fusionar diccionarios utilizamos el método update().
87 87
2.5 Los diccionarios de Python: Recorrer los elementos
de un diccionario
Recorrer los elementos de un diccionario
Los diccionarios son secuencias de elementos, por lo que se les considera objetos
iterables. Para recorrer dichos elementos se pueden usar la sentencia for (como ya
vimos en la sección anterior). Por ejemplo podemos recorrer las claves del
diccionario y a partir de ellas acceder a los valores.
También es posible usar una sentencia for para recorrer los pares clave-valor que
devuelve el método items().
88 88
2.5 Los diccionarios de Python: La función zip
La función zip
La función zip() permite crear un objeto iterable a partir de los elementos de otras
secuencias. Básicamente, un objeto iterable es aquel que se puede recorrer, por
ejemplo las tuplas, listas y los diccionarios son todos ellos objetos iterables.
89 89
2.5 Los diccionarios de Python: La función zip
90 90
2.6 Definición por comprensión
91
2.1 Definición por comprensión
Una definición por comprensión es una expresión compacta que sirve para definir
listas, tuplas y diccionarios en Python. Se trata de definir cada uno de los elementos
sin tener que nombrar cada uno de ellos.
92 92
2.1 Definición por comprensión
93 93
2.7 Las funciones en Python (II)
94
2.1 Las funciones en Python (II): Funciones con
argumentos agrupados por tupla
Anteriormente hablamos de los argumentos de las funciones: los argumentos
posicionales y los argumentos por clave. En esta Sección introducimos otro tipo de
argumentos. Se trata de argumentos agrupados.
95 95
2.1 Las funciones en Python (II): Funciones con
argumentos agrupados por diccionario
Funciones con argumentos agrupados por diccionario
Son argumentos que se representan mediante una cadena con dos asteriscos al
principio de la misma (como por ejemplo **kwargs). Aparece a continuación de los
parámetros agrupados por tupla. Se definen mediante una secuencia de elementos
representados y agrupados mediante un diccionario. Como en el caso anterior, no
es necesario que el nombre sea kwargs:
96 96
2.1 Las funciones en Python (II): Funciones como
argumentos de otras funciones.
Funciones como argumentos de otras funciones.
Las funciones lambda pueden ser usadas en cualquier lugar donde sea requerido
un objeto de tipo función. Semánticamente, son solo azúcar sintáctico para
definiciones normales de funciones. Al igual que las funciones anidadas, las
funciones lambda pueden hacer referencia a variables desde el ámbito que las
contiene.
97 97
2.1 Las funciones en Python (II): Funciones como
argumentos de otras funciones.
• Las funciones lambda se utilizan mucho en análisis de datos ya que es muy usual
transformar datos mediante funciones que tienen a otras funciones en sus
argumentos.
En el siguiente ejemplo, la función aplica recibe como datos de entrada una lista de
elementos m y una función f. El valor devuelto por aplica es una lista de elementos
que son resultado de aplicar la función f a cada uno de los elementos en m.
98 98
2.1 Las funciones en Python (II): Funciones como
argumentos de otras funciones.
Pero el mismo efecto lo conseguimos mediante una función anónima, evitando así la
definición de la función producto:
99 99
2.2 Las funciones en Python (II): Lista de funciones
como argumento de una función
Lista de funciones como argumento de una función
Para dar un formato uniforme a esta lista antes de realizar otras tareas de análisis,
es necesario transformarla eliminado espacios en blanco y transformando cada
nombre a tipo título.
El valor devuelto por la función formatear es una nueva lista de ciudades, pero esta
vez procesada.
100 100
2.1 Las funciones en Python (II): Lista de funciones
como argumento de una función
Ejemplo:
Este tipo de transformaciones es habitual tener que hacerlos cuando trabajamos con
datos de tipo cadena.
101 101
2.1 Las funciones en Python (II): Lista de funciones
como argumento de una función
Una alternativa más flexible consiste en crear una lista de operaciones a realizar y
posteriormente aplicarla a la lista de ciudades:
102 102
2.3 Las funciones en Python (II): La función map
La función map
En el siguiente ejemplo, la función map aplica la función strip a cada una de las
ciudades en la lista de ciudades.
103 103
2.8 Ejercicios
104
2.1 Ejercicios
105 105
2.1 Ejercicios
106 106
2.1 Ejercicios
107 107
2.1 Ejercicios
Continúa
108 108
2.1 Ejercicios
109 109
2.2 Ejercicios
110 110
2.2 Ejercicios
111 111
2.2 Ejercicios
112 112
2.2 Ejercicios
113 113
Bibliografía
114 114