Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

1 Introducción

1.1¿Qué es Python?

Python es un lenguaje de programación de alto nivel y propósito general. Se caracteriza por poseer una sintaxis relativamente sencilla y legible, lo que facilita escribir, revisar y modificar programas. Es además un proyecto libre y de código abierto, respaldado por una extensa comunidad de usuarios y desarrolladores.

Al ser un lenguaje de propósito general, Python puede utilizarse para resolver problemas muy diversos. Actualmente se emplea en áreas como el desarrollo web, el análisis de datos, el procesamiento de imágenes, el aprendizaje automático, la computación científica y el cálculo simbólico.

Python es también un lenguaje interpretado, característica que facilita probar instrucciones y modificar programas rápidamente. Esto resulta especialmente útil durante el aprendizaje, la experimentación y el desarrollo de prototipos.

Una de las principales fortalezas de Python es su amplio ecosistema de bibliotecas. Algunas de ellas, como NumPy, SciPy, Matplotlib, pandas y SymPy, proporcionan herramientas para realizar cálculos científicos, analizar datos, generar gráficos o trabajar con expresiones matemáticas.

Esta combinación de una sintaxis legible, un amplio ecosistema y la posibilidad de utilizar el mismo lenguaje en problemas muy diferentes ha convertido a Python en una herramienta ampliamente utilizada en numerosos ámbitos, entre ellos la ciencia y la ingeniería.

1.2Python como herramienta para ingeniería

En ingeniería es habitual trabajar con modelos matemáticos, datos experimentales, simulaciones y procedimientos de cálculo que pueden llegar a ser repetitivos o difíciles de realizar manualmente. En este contexto, la programación constituye una herramienta que permite automatizar tareas, implementar métodos de cálculo y analizar resultados de una manera sistemática y reproducible.

Python resulta especialmente útil para este propósito gracias a la gran cantidad de herramientas disponibles para el cálculo científico y el trabajo técnico. Estas herramientas permiten ampliar considerablemente las capacidades básicas del lenguaje y adaptarlo a distintos tipos de problemas técnicos.

A lo largo de estos apuntes utilizaremos Python para tareas como:

  • resolver sistemas de ecuaciones;

  • trabajar con vectores y matrices;

  • representar funciones y datos mediante gráficos;

  • implementar métodos numéricos;

  • analizar conjuntos de datos;

  • realizar cálculos simbólicos;

  • automatizar procedimientos repetitivos.

Estas capacidades pueden aplicarse en numerosas áreas de la ingeniería. En mecánica, por ejemplo, pueden facilitar el análisis de sistemas de fuerzas o el estudio del movimiento de mecanismos; en mecatrónica y robótica, permiten trabajar con transformaciones, trayectorias y modelos matemáticos; y en otras disciplinas resultan útiles para procesar mediciones, analizar señales, resolver modelos o visualizar resultados.

Una ventaja importante de Python es que permite integrar dentro de un mismo flujo de trabajo el planteamiento matemático de un problema, su implementación computacional, la obtención de resultados y su posterior análisis. De esta manera, la programación se convierte en una herramienta de apoyo para estudiar y resolver problemas propios de la ingeniería.

Este será precisamente el enfoque de los apuntes: aprender los fundamentos de Python mientras se aplican progresivamente a problemas, cálculos y pequeñas herramientas de interés científico y de ingeniería.

1.3Instalando Python

Para comenzar a trabajar con los ejemplos de estos apuntes necesitaremos disponer de una instalación de Python 3 en nuestra computadora. Al instalar Python obtenemos, entre otras herramientas, el intérprete encargado de ejecutar las instrucciones y programas que escribiremos.

La forma recomendada para seguir estos apuntes consiste en instalar Python desde su sitio web oficial.

Desde la sección de descargas puede obtenerse el instalador correspondiente al sistema operativo utilizado. En general, es recomendable trabajar con una versión reciente de Python 3; salvo que se indique lo contrario, los ejemplos de estos apuntes no dependerán de una versión específica.

1.3.1Comprobando la instalación

Una vez finalizada la instalación, podemos comprobar que Python se encuentra disponible abriendo una terminal o consola de comandos y ejecutando:

python --version

Dependiendo del sistema operativo y de la configuración utilizada, también puede ser necesario emplear:

python3 --version

Si la instalación es correcta, aparecerá en pantalla la versión de Python disponible, por ejemplo:

Python 3.x.x

No es necesario comprender todavía qué ocurre internamente al ejecutar estos comandos. Por el momento basta con comprobar que nuestra computadora puede localizar y ejecutar el intérprete de Python.

1.3.2Instalando paquetes con pip

Python incluye una biblioteca estándar con numerosas herramientas, pero una parte importante de sus capacidades proviene de paquetes desarrollados por la comunidad.

Para instalar estos paquetes se utiliza habitualmente pip, el gestor de paquetes del ecosistema de Python. Podemos comprobar que se encuentra disponible mediante:

python -m pip --version

La estructura general para instalar un paquete es:

python -m pip install nombre_paquete

Por ejemplo, para instalar NumPy podríamos utilizar:

python -m pip install numpy

A lo largo de estos apuntes utilizaremos bibliotecas como NumPy, SciPy, Matplotlib, pandas y SymPy, entre otras. No es necesario instalarlas todas desde este momento; iremos incorporándolas conforme sean necesarias.

1.3.3Instalando Jupyter

Aunque Python puede utilizarse de distintas maneras, buena parte de los ejemplos de estos apuntes se desarrollarán utilizando Jupyter, un entorno interactivo que permite combinar texto, ecuaciones, código y resultados dentro de un mismo documento.

Una de las opciones disponibles es instalar JupyterLab utilizando pip:

python -m pip install jupyterlab

Una vez instalado, podemos iniciarlo desde la terminal mediante:

jupyter lab

Normalmente se abrirá una nueva pestaña en el navegador desde la cual podremos crear y ejecutar notebooks de Python.

En la siguiente sección veremos con mayor detalle cómo trabajar dentro de este entorno.

1.3.4Otras alternativas

Aunque la instalación local mediante la página oficial es la vía principal recomendada, existen otras alternativas populares:

  • Anaconda / Miniconda: Son alternativas basadas en conda que permiten gestionar Python, paquetes y entornos de trabajo. Si ya la tienes instalada en tu equipo, puedes utilizarla sin problemas para seguir el curso.

  • Google Colab: Permite ejecutar notebooks de Jupyter directamente en la nube desde el navegador, sin instalar nada localmente. Es una opción excelente para trabajar desde equipos con restricciones o para realizar pruebas rápidas.

1.4Jupyter Notebook

Una de las formas más cómodas de comenzar a trabajar con Python es mediante un notebook de Jupyter. Un notebook es un documento interactivo en el que pueden combinarse código, texto, ecuaciones, imágenes y resultados dentro de un mismo archivo.

Esta forma de trabajo resulta especialmente útil en ciencia e ingeniería, ya que permite documentar el planteamiento de un problema, realizar cálculos y mostrar los resultados en un mismo lugar. A lo largo de estos apuntes utilizaremos notebooks con frecuencia para desarrollar y experimentar con los ejemplos.

1.4.1Creando un notebook

Si instalamos JupyterLab como se indicó en la sección anterior, podemos iniciarlo desde una terminal mediante:

jupyter lab

Al hacerlo se abrirá normalmente una pestaña en el navegador con el entorno de JupyterLab. Desde ahí podemos crear un nuevo notebook y seleccionar Python como kernel.

Los notebooks se guardan en archivos con extensión .ipynb.

1.4.2Celdas de código y celdas Markdown

Un notebook está formado por celdas. Cada celda puede contener diferentes tipos de contenido, aunque por ahora nos interesan principalmente dos:

  • Celdas de código, donde escribimos instrucciones de Python.

  • Celdas Markdown, donde podemos escribir texto, encabezados, listas, enlaces, ecuaciones y otros elementos destinados a documentar nuestro trabajo.

Por ejemplo, en una celda de código podemos escribir:

2 + 3

y al ejecutarla Jupyter mostrará inmediatamente el resultado:

5

Por otra parte, una celda Markdown podría contener algo como:

## Cálculo de una velocidad

A continuación calcularemos la velocidad media de un móvil.

La combinación de ambos tipos de celdas permite desarrollar documentos en los que una explicación puede ir acompañada directamente del código utilizado para realizar los cálculos.

1.4.3Ejecutando celdas

Para ejecutar una celda podemos utilizar el botón correspondiente de la interfaz o, de manera más práctica, el atajo:

Shift + Enter

Cuando se ejecuta una celda de código, Jupyter envía su contenido al intérprete de Python y muestra el resultado inmediatamente debajo.

A la izquierda de las celdas de código aparece un indicador que proporciona información sobre su estado:

In [ ]:

indica que la celda todavía no ha sido ejecutada;

In [*]:

indica que la celda se encuentra en ejecución;

In [1]:

indica que la celda ya ha sido ejecutada. El número muestra el orden en que fue ejecutada durante la sesión.

1.4.4El orden de ejecución es importante

Una característica importante de los notebooks es que las celdas pueden ejecutarse en cualquier orden. El hecho de que una celda aparezca antes que otra en el documento no significa necesariamente que haya sido ejecutada primero.

Por ejemplo, supongamos que ejecutamos:

a = 10

y posteriormente:

a + 5

El resultado será:

15

Sin embargo, si reiniciamos la sesión e intentamos ejecutar únicamente la segunda celda, Python no conocerá todavía el valor de a y se producirá un error.

Por esta razón, es recomendable mantener los notebooks organizados de manera que puedan ejecutarse de arriba hacia abajo sin depender de acciones realizadas previamente.

1.4.5El kernel

El programa encargado de ejecutar las instrucciones de Python dentro de Jupyter se denomina kernel. Mientras trabajamos, el kernel mantiene en memoria la información generada durante la sesión, como variables, funciones y otros objetos que vayamos creando.

En ocasiones puede ser necesario reiniciarlo, por ejemplo, cuando queremos comenzar nuevamente desde un estado limpio o comprobar que nuestro notebook funciona correctamente desde el principio.

Al reiniciar el kernel se elimina la información almacenada durante la sesión, pero el contenido de las celdas permanece en el notebook.

1.4.6Guardando el trabajo

Jupyter guarda el contenido del notebook en un archivo .ipynb. Este archivo contiene tanto las celdas que hemos escrito como, normalmente, los resultados producidos durante su ejecución.

Es recomendable guardar periódicamente el trabajo realizado. Además, conviene mantener cada notebook organizado y acompañar los cálculos con explicaciones breves cuando sea necesario.

A lo largo de estos apuntes utilizaremos esta posibilidad para combinar el planteamiento de problemas, ecuaciones, código y resultados dentro de un mismo documento:

Problema
   ↓
Planteamiento
   ↓
Implementación en Python
   ↓
Resultados
   ↓
Interpretación

Este será uno de los flujos de trabajo habituales a lo largo del material: formular un problema, traducirlo a un planteamiento matemático o algorítmico, implementarlo en Python y finalmente interpretar los resultados obtenidos.

No es necesario conocer todas las herramientas disponibles en Jupyter para comenzar. Por ahora basta con saber crear un notebook, escribir y ejecutar celdas, interpretar sus resultados y mantener un orden de ejecución coherente.

1.5Python como calculadora

Una de las formas más sencillas de comenzar a trabajar con Python consiste en utilizarlo como una calculadora. Podemos escribir una expresión directamente en una celda de código y ejecutarla para obtener un resultado.

De manera informal, una expresión es una combinación de valores y operadores que Python puede evaluar. Por ejemplo:

2 + 3
5

De la misma manera, podemos realizar las operaciones aritméticas básicas:

8 - 3
5
4 * 6
24
10 / 4
2.5

Python utiliza los símbolos habituales para la suma, la resta y la división, mientras que la multiplicación se representa mediante *.

1.5.1Potencias y paréntesis

Para elevar un número a una potencia se utiliza el operador **:

2**8
256

También podemos agrupar operaciones mediante paréntesis:

(3 + 4) / 2
3.5

El uso de paréntesis permite indicar con claridad qué operaciones deben realizarse primero y resulta especialmente útil cuando las expresiones comienzan a ser más largas.

Python sigue reglas de precedencia similares a las utilizadas habitualmente en matemáticas. Por ejemplo:

2 + 3 * 4
14

porque la multiplicación se realiza antes que la suma. Si queremos modificar ese orden podemos utilizar paréntesis:

(2 + 3) * 4
20

1.5.2Traduciendo una expresión matemática a Python

Una ventaja de utilizar Python para realizar cálculos es que muchas expresiones matemáticas pueden traducirse de manera bastante directa al código.

Por ejemplo, la energía cinética de un cuerpo se calcula mediante:

Ek=12mv2E_k = \frac{1}{2}mv^2

Si un cuerpo tiene una masa de 10 kg y se mueve con una velocidad de 4 m/s, podemos escribir:

0.5 * 10 * 4**2
80.0

Por ahora no necesitamos almacenar la masa o la velocidad en variables. Nos interesa únicamente observar la correspondencia entre la expresión matemática y su representación en Python.

Este tipo de traducción entre un modelo matemático y una expresión computacional aparecerá con frecuencia a lo largo de los apuntes.

1.5.3Los errores también forman parte del trabajo

No todas las expresiones que escribamos producirán un resultado válido. Por ejemplo:

1 / 0
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
Cell In[26], line 1
----> 1 1 / 0

ZeroDivisionError: division by zero

genera un mensaje de error, ya que la división entre cero no está definida. Por ahora no necesitamos interpretar todos los detalles que aparecen en pantalla. Basta con observar que Python identifica el tipo de problema que se ha producido.

En este punto ya podemos utilizar Python para evaluar expresiones matemáticas sencillas y experimentar directamente con diferentes valores. En los capítulos siguientes iremos incorporando nuevos elementos que nos permitirán construir cálculos y programas cada vez más elaborados.

1.6Cómo utilizar estos apuntes

Estos apuntes están pensados para aprender Python de manera progresiva y, al mismo tiempo, utilizarlo como una herramienta para resolver problemas de interés científico y de ingeniería.

A lo largo del material se combinarán explicaciones, expresiones matemáticas, fragmentos de código, resultados y ejemplos de aplicación. La intención no es únicamente leer los ejemplos, sino ejecutarlos, modificarlos y experimentar con ellos.

Por ejemplo, cuando se muestre un cálculo sencillo, resulta recomendable cambiar algunos valores y observar cómo cambia el resultado. Este tipo de experimentación ayuda a comprender mejor tanto la sintaxis de Python como el comportamiento del problema que se está estudiando.

1.6.1No es necesario memorizar todo

Aprender a programar no consiste en memorizar cada instrucción o cada detalle de la sintaxis. Conforme avancemos, será normal olvidar el nombre exacto de una función, la forma de utilizar determinado método o los argumentos que recibe una biblioteca.

La documentación oficial, los ejemplos disponibles y la experimentación forman parte habitual del trabajo con Python. Lo importante es comprender los conceptos fundamentales y desarrollar la capacidad de buscar, interpretar y adaptar la información necesaria para resolver un problema.

1.6.2Un enfoque orientado a problemas

Cuando resulte natural, los ejemplos de estos apuntes estarán relacionados con situaciones propias de la ciencia y la ingeniería. Esto permitirá introducir los conceptos de programación dentro de un contexto de aplicación.

Un flujo de trabajo que aparecerá con frecuencia será:

Problema
   ↓
Planteamiento
   ↓
Implementación en Python
   ↓
Resultados
   ↓
Interpretación

El objetivo no será únicamente obtener un número, una tabla o una gráfica, sino comprender qué representan los resultados y evaluar si son coherentes con el problema planteado.

En algunos casos comenzaremos con problemas muy sencillos y volveremos a ellos posteriormente utilizando herramientas más avanzadas. De esta manera, un mismo problema puede servir para introducir progresivamente nuevos conceptos y comparar diferentes formas de resolverlo.