Parte1 Python General
Parte1 Python General
ORIENTADO A LA RESOLUCIÓN DE
PROBLEMAS DE OPTIMIZACIÓN EN
INGENIERÍA
(VI Edición, 2021)
Daniel Gutiérrez Reina, [email protected]
https://spectrum.ieee.org/at-work/tech-careers/top-programming-language-2020
Introducción a Python
Popularity of Programming Language
Ofertas de trabajo
Infojobs:
¿Cómo vamos a trabajar? Metodología
➢ Scripts de ejemplos.
➢ Problemas a resolver.
➢ Si alguien tiene interés en algún módulo concreto de Python que nos lo diga
y lo vemos también (dentro de mis posibilidades ☺ ).
python ejemplo.py
Formas de trabajar en Python
3. Interpretes interactivos → ipython
• Distribución de Python que incluye los 1000 paquetes de Python (también R) más usados.
• Entre esos 1000 paquetes están los que vamos a ver en este curso → Numpy y Matplotlib.
• Dentro de la distribución Anaconda se incluye iPython y Spyder (entorno de programación que vamos
a utilizar).
https://www.spyder-ide.org/
Formas de trabajar: Jupyter notebook
Live scripting → Ideal para congresos o conferencias (viene con Anaconda)
Nos permite incluir código y texto de una manera muy elegante. Se pueden
compartir, subir a repositorios (github), etc.
Celda de código
Celda de texto
Formas de trabajar: Colab (Aplicación Online
de Google)
Funcionamiento muy parecido al de Jupyter.
Se puede enlazar con los datos de drive.
Supuestamente Google nos da ciertos recursos (GPUs).
Celda de código
Celda de texto
Manos a la obra!! Barra de herramientas
Visualizar variables,
objetos y archivos
INTERPRETE IPYTHON
¿Qué vamos a ver sobre Python?
Introducción al lenguaje de programación Python
1) Variables (general)
2) Listas
3) Tuplas
4) Cadenas
5) Diccionarios
6) Booleanos y sets
7) Operaciones básicas
8) Control de flujo (if-else)
9) Funciones (funciones nativas)
10) Módulos y paquetes
11) Manejo de archivos
12) Clases
Ejemplos:
Variables en Python
TENED SIEMPRE EN LA MENTE QUE TODO EN PYTHON ES UN OBJETO
Ejemplos:
Métodos – Operador “.” – var.metodo()
Ejemplos de métodos que podemos utilizar el una variable entera:
Mi primer programa: Hello, world!”
El origen se debe a Brian Kernighan en 1973 escribe el libro “A tutorial Introduction to
the Programming Language B”, en este libro se introduce el lenguaje de programación
B, el cual es el predecesor del lenguaje C.
Imprimir variables en Python
Imprimir variables en Python → print (si utilizamos el interprete interactivo no
hace falta).
Ejemplos:
Imprimir variables en Python 3
A partir de Python 3, la impresión de variables cambia. Todo debe ir entre los
paréntesis
Ejemplos:
En Python 2.7 no era obligatorio usar
los paréntesis
Errores programación
Definición de listas:
Todos
Para conocer la longitud de una lista debemos utilizar la función nativa len(nombre_lista)
La función nativa len sirve para todos los objetivos tipo secuencia de Python:
listas, tuplas, cadenas, diccionarios y sets.
Listas en Python
Principales métodos de las listas
Listas en Python
Tabla completa de métodos
https://docs.python.org/3/tutorial/datastructures.html
Listas en Python
Ordenar listas:
Orden inverso
Muchos métodos como funciones que son tienen parámetros
de entrada. Estos parámetros de entrada tienen también
valores por defecto.
https://docs.python.org/3/library/copy.html
Listas en Python
Formas de definir una lista vacía
Lista= []
O también:
Lista = list()
❖ Dónde puedo ver todo lo que puedo hacer con las listas (página oficial).
https://docs.python.org/3/tutorial/datastructures.html
Listas en Python
Ejercicio: (5 min)
1) Crear la siguiente lista, l1 = [‘a’, ‘c’, ‘d’, ‘a’, ‘l’, ‘m’]
Utilizar un método para saber el número de veces que la lista contiene el carácter ‘a’.
LISTAS TUPLAS
“Un paréntesis con la variables …”
Algunos comandos de Ipython muy útiles:
%Reset: sirve para borrar las variables de memoria. Nos preguntará si estamos seguros
de que queremos borrar las variables (no se puede dar marcha atrás)
https://docs.python.org/3/library/stdtypes.html
https://www.tutorialspoint.com/python3/python_strings.htm
Cadenas en Python (strings)
Los elementos de una cadena también se pueden acceder por su índice, como si fueran una
lista de caracteres.
https://www.geeksforgeeks.org/python-format-function/
Cadenas en Python (strings)
Ejercicio:
Utilizar el método split para descomponer texto (un párrafo), en una lista de palabras.
Imprimir la lista de palabras por pantalla.
Ejercicio:
Utilizar el método strip para convertir una cadena con formato url por ejemplo
www.marca.com en la cadena de texto equivalente sin www. y .com.
Nota: utilizar dos líneas de código si es necesario.
Pregunta:
¿Cómo caculo la longitud de una cadena en Python?
Diccionarios en Python
Estructura de datos más compleja (hash). Parejas key-value. Podemos verlo como una lista
en la que los índices son cadenas → Objeto mutable.
• El value de una key puede ser cualquier objeto, incluyendo listas u otros diccionarios.
Diccionarios en Python
Ejercicio:
1) Crear un diccionario que se llame pizza, que contenga las siguientes keys:
2) Utilizar un método para crear un lista con los valores de las keys.
3) Buscar información sobre el método update de los diccionarios y utilizarlos para actualizar
los ingredientes de la pizza creada en 1.
Constantes en Python
El Python las constantes se definen en mayúsculas. Es decir, cuando una variable
se considera que no va a ser modificada se escribe en mayúsculas.
Esto sólo es un convenio entre programadores. Cuando una variables contiene un dato
que no quiero modificarlo, lo ponemos en mayúsculas, pero realmente si se puede modificar.
Lógica booleana
And
Or
Etc.
Sets en Python
Los set son objetos iterables que se definen de la siguiente forma:
https://docs.python.org/3/tutorial/datastructures.html
Objetos mutables y objetos inmutables
❑ En Python las variables de tipo entero, float, boolean, cadenas y tuplas son inmutables!!
Inmutable significa que su contenido no se puede variar. Ejemplo: a una variable entera
aunque le cambien el contenido y me deje hacerlo, en realidad Python está creado otro
objeto!!!
Objetos mutables y objetos inmutables
❑ En Python las variables de tipo entero, float, boolean, cadenas y tuplas son inmutables!!
Inmutable significa que su contenido no se puede variar. Ejemplo: a una variable entera
aunque le cambien el contenido y me deje hacerlo, en realidad Python está creado otro
objeto!!!
Objetos mutables y objetos inmutables
❑ En Python las variables de tipo entero, float, boolean, cadenas y tuplas son inmutables!!
Inmutable significa que su contenido no se puede variar. Ejemplo: a una variable entera
aunque le cambien el contenido y me deje hacerlo, en realidad Python está creado otro
objeto!!!
Objetos mutables y objetos inmutables
❑ En Python las variables de tipo entero, float, boolean, cadenas y tuplas son inmutables!!
Inmutable significa que su contenido no se puede variar. Ejemplo: a una variable entera
aunque le cambien el contenido y me deje hacerlo, en realidad Python está creado otro
objeto!!!
Objetos mutables y objetos inmutables
❑ En Python las variables de tipo listas, sets y diccionarios son mutables!!
forma secuencial.
❑ Se pueden ejecutar desde un terminal ipython con el comando run (ojo hay con el
❑ Los scripts normalmente se empiezan importando los paquetes o módulos que se van
Visualizar variables,
objetos y archivos
INTERPRETE IPYTHON
Mi primer script en Python
Ejecutar todo el script
Resultado
Mi primer script en Python
❑ Abrir → script1.py
❑ #%% Para definir celdas → Muy interesante podemos ejecutar el código de forma
Celda 1
Celda 2
Mi primer script en Python
Ejecutar la celda actual
Comentarios
Mi primer script en Python
Ejecutar la celda actual y avanzar a la siguiente
Comentarios
Mi primer script en Python
Ejecutar línea actual o selección
Comentarios
Mi primer script en Python
Ruta actual
Mi primer script en Python
Resto y potencia:
Continuamos con Python … Operaciones básicas
Ojo con las operaciones matemáticas con listas:
Primero se compara las primeras posiciones de las lista (1 y 1), si son iguales se pasa
a la segunda posición y así sucesivamente …
Realmente en
Python 3 todo es
Unicode, pero la comparación
se realiza igualmente.
Control de flujo en Python
Lo vamos a ver con un script → Abrir script 2
Detalles sobre las sentencias if – else:
➢ Python es un lenguaje “indentado” - sangrado → “Ojo con los
tabuladores” → Puede ser lioso al principio.
➢ No olvidar los “:” después de la sentencias if y esle.
Ejercicio:
Usando el comando input() y las sentencias if-else:
Indicar si la primera cifra de tu DNI es mayor o
menor que la última.
https://www.python-course.eu/python3_input.php
Bucles “for” en Python
➢ Son un poco diferentes a los bucles for en otros lenguajes de programación (C, Matlab).
➢ Los bucles for recorren iterables tales como listas, tuplas, cadenas y diccionarios.
➢ Abrir script3
➢ La sentencia in range(inicio, stop) es muy últil → Ojo stop -1! Si no ponemos inicio, considera
el cero como el valor de inicio.
➢ También podemos dar un paso in range(inicio, stop, paso), si el paso es negativo iríamos
hacia atrás. → Ojo no podemos dar como paso un float (numpy). Más adelante “arrays”.
Ejercicio:
mayor y su posición.
Bucles “for” en Python
Ejercicio:
http://www.ejemplode.com/53-conocimientos_basicos/2555-
ejemplo_de_palindromos.html
Python
Definición matemática
→ En script3.py
Resumen bucles en Python
Ejercicios list comprenhension
Ejercicio1: Crear una lista con las palabras del siguiente párrafo:
"the quick brown fox jumps over the lazy dog“, siempre y cuando la palabra no
sea “the”.
Ejercicio2: Crear una nueva lista partiendo de numeros = [34.6, -203.4, 44.9, 68.3, -12.2,
44.6, 12.7], que solo contenga números positivos.
Otro paréntesis … Colores de sintaxis
➢ Podemos definir los colores de la sintaxis que utiliza Python en la siguiente ruta:
Preferencias → Apariciencia
Bucles “while” in Python
→ Abrir script4.py
❖ continue → para seguir con la siguiente iteración, no sigue con lo que hay debajo.
❖ pass → no hace nada. Sirve para utilizarse en partes de código que no han sido
todavía escritas.
Funciones en Python
Una función es un conjunto de sentencias agrupadas en una pieza de código que
posee cierta independencia → El objetivo principal es no repetir código!!
❖ Sintaxis:
→ Abrir script5.py
“””Documentacion”””
Funciones en Python
Ejercicio:
Crear la función resta y hacer que los datos se reciban desde el terminal.
Funciones en Python
Seguimos viendo la utilidad de las funciones:
→ Abrir script6.py
→ Abrir script7.py
Funciones en Python
Podemos asignar una función a una variable en Python
2) Programe una función que pida como entrada un número entero y devuelva True si el
número es primo o False en caso contrario.
3) Programe una función que reciba como entrada una lista de datos flotantes y
devuelve la suma de todos los componentes de la lista.
4) Basándose en la función anterior (3), desarrollar una función que multiplique los
componentes de las posiciones impares de la lista (tiene que ser válida para
cualquier tamaño de lista).
Funciones nativas o “Built-In” en Python
Funciones que siempre tenemos accesibles, vienen con el interprete de Python, el
interprete las identifica y las pone en color verde → No tenemos que “importar”
ningún módulo ni paquete
→Abrir script8.py
Funciones nativas o “Built-In” en Python
Resumen:
Ejercicio 2: Dada la lista ["a", 1, [1,2], 2, (1,2), 3] utilizar una función que
devuelva una lista que sólo contenga los elementos de tipo enteros de la lista.
→ ABRIR script9.py
Ejercicio:
Crear una función lambda que calcule el cuadrado de un número.
Constantes “Built-In” en Python
Algunas constantes que podemos utilizar en Python (por defecto las tenemos)
Las variables que definimos fuera de las funciones son variables globales. Si queremos
modificar su contenido debemos utilizar “global”. (Recordar que las listas van aparte).
→ Abrir script10.py
More info:
http://www.python-course.eu/global_vs_local_variables.php
Aunque soy un gran programador … A veces
me equivoco ☺
https://github.com/gotcha/ipdb
En spider tenemos una serie de botones que nos permiten de forma sencilla depurar
scripts.
→ Abrir debug1.py
Depurar código en Python
3: ENTRAR DENTRO DE UNA FUNCIÓN EN MODO DEPURACIÓN
→ Abrir debug2.py
Depurar código en Python
En Python cuando se produce un error el terminal nos indica la traza (camino) que ha producido el
error. Esto es interesante para saber dónde se ha producido el error.
→ Abrir debug3.py
Otras herramientas para Depurar código en
Python
Excepciones (try – except):
→ Abrir debug4.py
Assertions:
Sirve para hace una comprobación segura del cierto código. Por ejemplo, para hacer un
comprobación de un código antes de seguir.
→ Abrir debug5.py
Logging:
Sirve para imprimir ciertos mensajes sin tener que realizar “print”. Tiene ciertas ventajas sobre los
prints, ya que podemos deshabilitarlo cuando queramos, además podemos definir ciertos niveles
logs.
https://automatetheboringstuff.com/chapter10/
Módulos en Python → Librerías
Conjunto de funciones y variables que han sido definidos en un script y que pueden ser usadas
en otros scripts.
→ Abrir script11.py
https://docs.python.org/3/library/random.html
Módulos en Python
Formas de importar un módulo en Python:
EL OBJETIVO DE TODO ESTO ES NO LIARSE CON LOS NOMBRES Y PODER REUTILIZAR LOS NOMBRES
TAMBIÉN AHORRAR TIEMPO, SI IMPORTAMOS EL MÓDULO COMPLETO LA EJECUCIÓN DEL CÓDIGO TARDARA MÁS.
→ Abrir script12.py
→ Abrir script13.py
Cómo instalar otros módulos en Spyder?
Utilizamos la aplicación pip, con el comando pip install <nombre-modulo>
Una forma para saber los métodos (funciones) que incluye un módulo es con la built-in function
dir → dir(<nombre_modulo>).
La lista sigue …
Números aleatorios → Módulo random
Módulo para la generación de números aleatorios
import random
→ Abrir script14.py
Funciones matemáticas → Módulo math
Algunas funciones que están disponibles
Más info:
https://docs.python.org/2/library/math.html
Este módulo nos permite realizar operaciones sobre el sistema operativo, paso de parámetros a los
scripts, ajuste de parámetros, etc.
→ Abrir script15.py
Manejo de archivos en Python
En Python podemos escribir y leer de archivos de forma muy sencilla
→ Abrir script16.py
→ Abrir script17.py
Ejercicio:
- Calcular el número de palabras, el número de caracteres totales y el número de espacios.
Manejo de archivos en Python
Ejercicio:
- Utilizando el archivo romeo.txt escriba un script que lea las líneas del fichero una a una y cree
una lista que contenga todas las palabras que contiene el archivo sin repetir.
- Utilizando el mismo archivo romeo.txt escriba un script que lea las líneas del fichero una a una
cree un diccionario que contenga una key distinta para cada palabra y como value el número de
veces que la palabra se encuentra en texto.
Resumen manejo de archivos en Python
Otro detalle de Spyder …
Explorador de archivos
Para ver los archivos que tengo almacenados en el directorio de trabajo → Explorador
de archivos.
Más de manejos de archivos … Módulo OS
Miscellaneous operating system interfaces
https://docs.python.org/2/library/os.html#module-os
→ Abrir script18.py
Manejo de hojas excel
En este curso no vamos a ver como podemos abrir archivos de excel con módulos
específicos de Python para ello.
Recordar que un archivo excel siempre se puede convertir a .csv y se puede analizar tal
y como hemos visto con los archivo de textos.
Clases en Python
Definición:
Las clases y los objetos son poderosas herramientas de programación. Facilitan la tarea de
programar. Una clase es la “clasificación” de un objeto. Tal como “persona” o “imagen.” Un
objeto es una instancia particular de una clase. Tal como “María” es una instancia de
“Persona.”
Los objetos poseen atributos, tales como el nombre, altura y edad de una persona. Los objetos
también poseen métodos. Los métodos definen qué acciones pueden realizar los objetos, tales
como correr, saltar o sentarse. Un método es una función que existe dentro de una clase.
En Python, las clases tienen una función especial que es llamada en el momento en que una
instancia de esa clase es creada. Añadiendo esa función, llamada constructor, el programador
puede añadir el código necesario, el cual, automáticamente, será ejecutado cada vez que una
instancia de la clase sea creada.
Clases en Python
Python es un lenguaje orientado a objetos. En realidad todo en Python es
un objeto.
→ Abrir script19.py
Consideraciones:
En el constructor o método __init__() debo incluir como variables de entrada aquellos atributos del
objeto que quiero inicializar al crear el objeto.
Clases en Python
Consideraciones:
• Todos los métodos tiene que comenzar con self (hace referencia al propio objeto).
• En el constructor o método __init__() debemos incluir como variables de entrada aquellos atributos del
objeto que quiero inicializar al crear el objeto.
• Si el atributo no se actualiza en la creación del objeto, sebe debe poner fuera del __init__ (antes).
• Los atributos del objeto NO se deben incluir como valores de entradas de los métodos. Los atributos
del objeto se acceden mediante self (lo mismo ocurre con los otros métodos del objeto).
Una vez creada la clase, definir una lista de alumnos (3 alumnos es suficiente). Modificar los
elementos de la lista para que haya un suspenso. Mediante un bucle recorrer la lista de alumnos e
imprimir en un archivo de texto los datos del alumno suspenso separados por comas.
Clases en Python
Trabajar con listas de objetos. Obtener el máximo y mínimo, y ordenar listas en función
de los atributos del objeto
→ abrir script20.py
Clases en Python
Herencia en clases
→ Abrir script21.py
→ Abrir script22.py
Conceptos más avanzados
Ahora vamos a ver unos conceptos más avanzados de la programación en
Python 3.
• Decoradores
• Iteradores (diferencia entre “Iterable” y “iterator”)
• Generadores.
• Métodos mágicos
Decoradores en Python
Un decorador nos permite realizar modificación simples en objetos (callable)
como son las funciones, métodos o clases. Estas modificaciones se realizan en
tiempo de ejecución.
Una definición de los decoradores sería; es una función que recibe como
parámetro otra función y devuelve una función → Modificamos una función sin
tener que modificar su código.
→ Abrir script23.py
Para que un objeto sea un iterador tiene que tener dos métodos mágicos.
Un objeto que tenga el método __iter__() es iterable, pero para que sea un
iterador tiene que tener también el método __next__().
→ Abrir script24.py
Iteradores en Python
Una lista es iterable pero no es un iterator ya que no tiene definido el método
.__next__()
Cuando iteramos sobre una lista en un bucle for, se realiza una conversión
automática de lista a iterable. La función nativa iter() nos permite hacer dicha
transformación.
Iteradores en Python
Vamos a crear un iterador:
→ Script25.py
Generadores en Python
Un generador es una función que almacena su estado cada vez que devuelve un
valor. Se define igual que una función, pero para devolver los valores se utiliza
Yield.
Con la función nativa next(), podemos llamar al generador para que realice
otra iteración sobre el generador.
→ Script26.py
https://realpython.com/introduction-to-python-
generators/#understanding-generators
Generadores en Python
Ejemplo:
Resumen Geradores, Iteradores e iterables
Métodos mágicos de un objeto
Cuando creamos un objeto siempre se crean una serie de métodos que son
métodos mágicos. Es decir, se crean automáticamente. Se pueden acceder a
ellos mediante __ (doble guión bajo)
http://www.python-course.eu/course.phphttp://www.python-course.eu/course.php
http://effbot.org/
Bibliografía
https://www.umaeditorial.uma.es/libro/aprendiendo-a-
programar-en-python_2501/