0% encontró este documento útil (0 votos)
5 vistas219 páginas

ManualFP CD

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
5 vistas219 páginas

ManualFP CD

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 219

MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON

EL LENGUAJE PYTHON

Módulo
FUNDAMENTOS DE PROGRAMACIÓN EN
PYTHON

0
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EL LENGUAJE PYTHON

Aprendizaje Esperado 1

Distinguir las características principales del lenguaje Python y su


utilización para resolver distintas problemáticas.

El lenguaje Python: Reseña del lenguaje


Python

¿Qué es Python?

Python es un lenguaje de programación que cualquiera puede usar


(código abierto) y modificar porque su código está disponible para
todos. Es muy fácil de entender porque se organiza en objetos que se
relacionan entre sí, por lo que comúnmente se entiende que python
es un lenguaje de programación orientado a objetos. Además, su forma
de escribir el código (sintaxis) es muy sencilla y cuenta con muchas
herramientas que hacen que Python sea un lenguaje de programación
muy completo.

Python ocupa actualmente un lugar muy destacado entre los


lenguajes de programación más utilizados en el mundo. Se ha
convertido en uno de los lenguajes más populares debido a su

1
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EL LENGUAJE PYTHON

versatilidad y facilidad de uso, así como a su amplia gama de


aplicaciones en campos como la ciencia de datos, la inteligencia
artificial, el desarrollo web y la automatización. Según diversas
encuestas y clasificaciones, Python se sitúa consistentemente entre
los 5 lenguajes de programación más populares, y su popularidad
sigue creciendo rápidamente.

Origen de Python
Python fue creado por Guido van Rossum, un programador de
Holanda, a finales de los años 80. Él lo creó mientras trabajaba en el
Instituto Nacional de Investigación de Matemáticas y Ciencias de la
Computación en su país, con el objetivo de desarrollar un lenguaje
fácil de aprender y usar. Lo nombró como el grupo de comedia
británico Monty Python, al que era fanático. Desde su lanzamiento en
1991, Python se ha ganado una gran popularidad gracias a su
simplicidad y facilidad de lectura. Actualmente es uno de los lenguajes
de programación más utilizados en todo el mundo, y ha sido
desarrollado por una comunidad de programadores que lo continúa
optimizando.

Dato curioso

ABC fue un lenguaje de programación creado en los años 80 como


un sucesor del lenguaje BASIC, que se destacaba por su facilidad de
uso y legibilidad. Guido van Rossum, creador de Python, trabajó en
el desarrollo de ABC en el Centro de Matemáticas y Informática de
los Países Bajos, donde adquirió experiencia en el diseño y
desarrollo de lenguajes de programación.

Años más tarde, cuando Guido estaba desarrollando Python en el


Centro de Matemáticas y Informática, decidió tomar algunos

2
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EL LENGUAJE PYTHON

conceptos y características de ABC para incorporarlos en Python. Por


ejemplo, la sintaxis clara y concisa de ABC fue utilizada como base
para la sintaxis legible de Python, y la idea de incluir un intérprete
para probar el código rápidamente se mantuvo en Python.

En resumen, ABC tuvo una influencia significativa en la creación de


Python, y algunos de sus conceptos y características fueron
incorporados en el lenguaje de programación más popular que
conocemos hoy en día.

Principales características del lenguaje:


Hay varias razones por las que alguien debería considerar aprender
Python, entre ellas:

● Fácil de aprender: tiene reputación de ser un lenguaje de


programación fácil de aprender, debido a su sintaxis clara y
concisa. Es un lenguaje ideal para aquellos que quieren empezar
en la programación.
● Multipropósito: es utilizado en una variedad de campos,
incluyendo la ciencia de datos, inteligencia artificial, desarrollo
web, automatización, entre otros. Esto lo hace un lenguaje
versátil y útil en diversos ámbitos.
● Comunidad activa y abundante documentación: la comunidad
de Python es grande y activa, lo que significa que hay muchos
recursos y herramientas disponibles para aquellos que están
aprendiendo o trabajando con Python. También hay una gran
cantidad de documentación disponible en línea.
● Demanda en el mercado laboral: es uno de los lenguajes de
programación más populares y demandados en el mercado
laboral actual, especialmente en áreas como la ciencia de datos

3
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EL LENGUAJE PYTHON

y la inteligencia artificial. Aprender Python puede aumentar las


oportunidades laborales de una persona.

● Flexibilidad y eficiencia: es un lenguaje de programación


flexible y eficiente, lo que significa que puede ser utilizado en
una variedad de proyectos y tareas de manera eficiente.
También se integra bien con otros lenguajes de programación y
herramientas, lo que lo hace una opción popular para proyectos
de desarrollo complejos.

¿Para qué se utiliza Python?

Python es un lenguaje de programación multipropósito y versátil, es


decir que se puede utilizar para el desarrollo de variadas tareas y
objetivos. Python es un lenguaje de programación de propósito
general que se puede utilizar en una amplia variedad de campos y
aplicaciones. Algunos de los usos más comunes de Python son:

● Análisis y visualización de datos


● Inteligencia artificial y machine learning
● Desarrollo web y de aplicaciones
● Automatización de tareas y procesos
● Juegos y entretenimiento
● Cálculos científicos y matemáticos
● Administración de sistemas y redes
● Procesamiento de imágenes y video
● Robótica y control de dispositivos

Actualmente, uno de los usos más populares de Python es la ciencia


de datos. Con su amplia gama de bibliotecas y herramientas, Python
es utilizado por científicos de datos para realizar tareas como análisis

4
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EL LENGUAJE PYTHON

de datos, minería de datos, aprendizaje automático y visualización de


datos.

Según la encuesta de Stack Overflow de 2021, alrededor del 30% de


los desarrolladores que usan Python lo utilizan principalmente para
ciencia de datos y análisis estadísticos.

Muchas empresas utilizan Python para trabajar los datos con los que
disponen, algunas de las más destacadas son:

● Google: para la recolección y análisis de datos, el procesamiento


del lenguaje natural, la inteligencia artificial y la
automatización de tareas.
● Netflix: para el análisis de datos de sus usuarios, lo que les
permite personalizar la experiencia del usuario y sugerir
contenido relevante.
● Amazon: para el análisis de datos de ventas y marketing, la
optimización de motores de búsqueda y la automatización de
procesos empresariales.
● Spotify: para el análisis de datos de los gustos musicales de sus
usuarios y para la recomendación de música.
● Facebook: para el análisis de datos de sus usuarios, lo que les
permite personalizar la experiencia del usuario y la publicidad.

Uso en Machine Learning


Python es especialmente útil para la ciencia de datos debido a su
amplia gama de bibliotecas y herramientas especializadas en este
campo. Algunas de las herramientas más importantes son:

● NumPy: biblioteca para cálculo numérico y manipulación de


matrices y vectores.

5
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EL LENGUAJE PYTHON

● Pandas: biblioteca para análisis de datos y manipulación de


conjuntos de datos tabulares.
● Matplotlib: biblioteca para crear visualizaciones y gráficos.
● SciPy: biblioteca para procesamiento de señales, álgebra lineal,
estadísticas y optimización.
● Scikit-learn: biblioteca para aprendizaje automático, que
incluye algoritmos para clasificación, regresión y clustering.

Estas herramientas, junto con otras bibliotecas y herramientas


disponibles en el ecosistema de Python, hacen que sea fácil trabajar
con datos y realizar análisis complejos en una amplia gama de
aplicaciones científicas.

Uso en Big Data


Python dispone de dos herramientas que son especialmente útiles
para trabajar con Big Data, además de las librerías que se usan para
el análisis y la ciencia de datos.

● PySpark: es una API de procesamiento distribuido de datos para


el procesamiento de grandes volúmenes de datos en un clúster
de computadoras. PySpark es parte de la plataforma de Apache
Spark, que permite realizar operaciones de procesamiento de
datos en paralelo en clusters de computadoras.
● Dask: es una biblioteca de Python para el procesamiento
paralelo y distribuido en grandes conjuntos de datos. Dask
permite trabajar con datos que no caben en la memoria RAM de
una sola computadora, dividiéndolos en pequeñas partes y
procesándolos en paralelo en varios núcleos de CPU o nodos de
clúster.

6
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EL LENGUAJE PYTHON

Versiones de python
Python 1.x: Fue la primera versión de Python, lanzada en 1991. Esta
versión ya no se utiliza y es muy poco probable que encuentres
código escrito en ella.

Python 2.x: Esta versión fue lanzada en 2000 y se mantuvo como la


versión principal de Python durante muchos años. Las versiones más
populares de Python 2.x son Python 2.7, que es la última versión de la
serie 2.x, y es compatible con muchos módulos y bibliotecas antiguos.

Python 3.x: Esta versión fue lanzada en 2008 y se considera la versión


principal y más actualizada de Python. Las versiones más populares
de Python 3.x son Python 3.6, Python 3.7, Python 3.8 y Python 3.9.
Python 3.x es incompatible con Python 2.x, lo que significa que el
código escrito para Python 2.x no funcionará en Python 3.x sin
modificaciones.

Cada versión de Python se libera bajo una Licencia de Python, que es


una licencia de software libre y de código abierto que permite a los
usuarios utilizar, modificar y distribuir el software sin restricciones. Es
importante tener en cuenta que la elección de la versión de Python
depende de las necesidades específicas del proyecto o aplicación que
se está desarrollando.

¿Cómo funciona Python?

El intérprete de Python es una aplicación que lee el código fuente


escrito en Python (o Script), lo analiza y lo ejecuta línea por línea. El
proceso comienza con la lectura del código fuente, que es
transformado en un conjunto de tokens y posteriormente analizado
para asegurar su validez sintáctica (validez de la sintaxis). Después, se

7
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EL LENGUAJE PYTHON

genera un código objeto o bytecode que es interpretado por la


máquina virtual de Python y ejecutado.

Durante la ejecución, el intérprete realiza varias tareas, como la


asignación de memoria a los objetos, la verificación de tipos y la
gestión de excepciones.

El intérprete también utiliza la biblioteca estándar de Python, que


proporciona una amplia gama de módulos y funciones para realizar
diversas tareas.

Una de las características más importantes del intérprete de Python


es que se trata de un intérprete interactivo. Esto significa que es
posible escribir código Python y ejecutarlo inmediatamente en la
consola de comandos, lo que lo hace muy útil para el desarrollo y la
depuración de programas. Además, el intérprete de Python también es
portable y puede ejecutarse en una gran variedad de plataformas y
sistemas operativos.

8
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EL LENGUAJE PYTHON

1. El código fuente de Python se escribe en un archivo de texto


plano con extensión .py.
2. Cuando se ejecuta el programa, el intérprete de Python lee el
archivo y convierte el código fuente en bytecode.
3. El bytecode se ejecuta en la máquina virtual de Python, que es
un entorno de ejecución que se encarga de la gestión de
memoria, la asignación de recursos y otros aspectos técnicos del
proceso de ejecución.
4. Durante la ejecución, el intérprete de Python lee y procesa línea
por línea el código bytecode generado, y ejecuta las
instrucciones correspondientes en la máquina virtual.
5. El resultado de la ejecución del programa se muestra en la
salida estándar, que puede ser la pantalla, un archivo de texto
o cualquier otro destino que se haya especificado en el
programa.

9
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EL LENGUAJE PYTHON

El entorno de trabajo Anaconda


Anaconda es un entorno de trabajo y distribución de Python muy
popular y ampliamente utilizado en la ciencia de datos, el aprendizaje
automático y la inteligencia artificial. Incluye una gran cantidad de
herramientas y bibliotecas de software preinstaladas, que son
esenciales para la mayoría de los proyectos de análisis de datos y
aprendizaje automático.

Algunas de las características principales de Anaconda son:

• Gestión de paquetes: Anaconda incluye una herramienta de


gestión de paquetes llamada "conda", que permite instalar y
actualizar fácilmente bibliotecas y herramientas adicionales
necesarias para un proyecto específico.

• Ambiente virtual: Anaconda permite crear ambientes virtuales


separados, lo que permite mantener diferentes versiones de las

10
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EL LENGUAJE PYTHON

bibliotecas y herramientas para diferentes proyectos sin


interferir entre sí.

• Interfaz de usuario: Anaconda tiene una interfaz de usuario


gráfica (GUI) llamada "Anaconda Navigator", que permite
administrar y lanzar diferentes herramientas y ambientes
virtuales de forma sencilla.

• Amplia selección de bibliotecas: Anaconda incluye una amplia


selección de bibliotecas de software preinstaladas para el
análisis de datos y el aprendizaje automático, como NumPy,
Pandas, Matplotlib, Scikit-Learn, TensorFlow, entre otros.

• Multiplataforma: Anaconda es compatible con diferentes


sistemas operativos, incluyendo Windows, macOS y Linux.

¿Cómo utilizar Python?


Para utilizar Python, primero debe descargar e instalar el software en
su computadora. Puede descargar Python desde el sitio web oficial
(https://www.python.org/downloads/ ).

Una vez instalado, puede escribir su código Python en un editor de


texto simple como Bloc de notas o en un entorno de desarrollo
integrado (IDE).

¿Qué es un IDE?
Un IDE (Integrated Development Environment) es un entorno de
desarrollo integrado que proporciona un conjunto completo de

11
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EL LENGUAJE PYTHON

herramientas para programar, depurar y ejecutar código. En el caso de


Python, hay varios IDE disponibles, algunos de los cuales son
específicos de Python, mientras que otros son compatibles con
múltiples lenguajes de programación.

Algunos ejemplos de IDE para Python son:

● PyCharm
● Spyder
● Visual Studio Code
● Jupyter Notebook

Cada IDE tiene sus propias características y ventajas, por lo que es


importante investigar y probar varios para encontrar el que mejor se
adapte a tus necesidades y preferencias.

Características de los IDE


A continuación, se presentan algunas características generales que se
encuentran en la mayoría de los IDE.

● Editor de código: El editor de código es una herramienta


fundamental en un IDE. Permite escribir, editar y guardar código
fuente para el proyecto.
● Depurador: El depurador permite ejecutar el código paso a paso
y detener la ejecución en cualquier momento para examinar el
estado de las variables y detectar errores.
● Integración con sistemas de control de versiones: La integración
con sistemas de control de versiones permite realizar
seguimiento de los cambios en el código fuente y colaborar con
otros desarrolladores.
● Autocompletado: El autocompletado es una herramienta útil
que sugiere automáticamente el código fuente mientras se
escribe.

12
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EL LENGUAJE PYTHON

● Resaltado de sintaxis: El resaltado de sintaxis hace que el


código sea más legible al resaltar diferentes elementos de la
sintaxis con diferentes colores.
● Navegación por el código: La navegación por el código permite
buscar fácilmente diferentes secciones del código fuente y
saltar de una sección a otra.
● Integración con herramientas externas: Los IDE a menudo se
integran con herramientas externas como compiladores,
intérpretes, analizadores estáticos y herramientas de
automatización de pruebas.
● Plantillas de código: Las plantillas de código son fragmentos de
código predefinidos que se pueden insertar en el editor de
código con un solo clic.
● Integración con documentación: La integración con
documentación permite acceder a la documentación de las
funciones y clases desde dentro del IDE.
● Personalización: Los IDE suelen permitir a los desarrolladores
personalizar la interfaz de usuario, los atajos de teclado y otros
aspectos para adaptarlos a sus necesidades y preferencias.

Jupyter Notebook: el IDE más utilizado en el


trabajo con datos.
El IDE más utilizado para ciencia de datos es Jupyter Notebook. Jupyter
Notebook es ampliamente utilizado por su capacidad para crear y
compartir documentos interactivos que combinan código,
visualizaciones, y explicaciones en formato de texto.

Además, Jupyter Notebook es compatible con varios lenguajes de


programación populares en ciencia de datos, como Python, R, y Julia.

13
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EL LENGUAJE PYTHON

También es altamente personalizable y extensible, lo que permite a


los usuarios adaptar su entorno de programación según sus
necesidades.

Para utilizar Jupyter Notebook, sigue los siguientes pasos:

● Descarga e instala Python en tu computadora. Jupyter Notebook


se instala automáticamente junto con Python.
● Abre una terminal o consola en tu computadora.
● Escribe el siguiente comando y presiona Enter: jupyter notebook
● Se abrirá una nueva ventana en tu navegador web
predeterminado con la interfaz de Jupyter Notebook.
● En la interfaz de Jupyter Notebook, puedes crear un nuevo
notebook o abrir uno existente. Para crear un nuevo notebook,
haz clic en "New" en la esquina superior derecha y selecciona
"Notebook: Python 3" (u otro lenguaje de programación si lo
prefieres).
● El nuevo notebook se abrirá en una nueva pestaña de tu
navegador. Ahora puedes empezar a escribir código en las
celdas de código.
● Para ejecutar una celda de código, presiona Control + Enter o
haz clic en el botón "Run" en la barra de herramientas.
● Puedes agregar nuevas celdas de código o celdas de texto en
cualquier momento haciendo clic en el botón "+" en la barra de
herramientas.
● Una vez que hayas terminado de trabajar en tu notebook,
guárdalo haciendo clic en "File" y luego en "Save and
Checkpoint" en la barra de menú.
● Cierra Jupyter Notebook haciendo clic en "File" y luego en "Close
and Halt" en la barra de menú.

Estos son solo los pasos básicos para utilizar Jupyter Notebook. Hay
muchas más funcionalidades y características que puedes explorar

14
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EL LENGUAJE PYTHON

para aprovechar al máximo esta poderosa herramienta para la ciencia


de datos.

Spyder
Spyder es un entorno de desarrollo integrado (IDE, por sus siglas en
inglés) para Python, diseñado especialmente para la ciencia de datos.
Proporciona una interfaz gráfica de usuario (GUI) para escribir, depurar
y ejecutar código Python de manera interactiva, lo que facilita el
análisis de datos y la experimentación con diferentes algoritmos.

Para utilizar Spyder, primero debes descargar e instalar la distribución


de Anaconda, que incluye Spyder y otras herramientas útiles para la
ciencia de datos. Una vez instalado Anaconda, puedes abrir Spyder
desde el menú de aplicaciones o desde la línea de comandos.

15
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EL LENGUAJE PYTHON

Una vez que esté abierto Spyder, verás una pantalla dividida en varias
secciones. En la sección de la izquierda, encontrarás un explorador de
archivos que te permite navegar por tus archivos y carpetas.

En la sección de la derecha, encontrarás el editor de código, donde


puedes escribir y editar tu código Python. En la parte inferior de la
pantalla, encontrarás la consola de IPython, donde puedes ejecutar
comandos y ver la salida de tu código.

Para comenzar a trabajar con Spyder, puedes crear un nuevo archivo


Python en el editor de código haciendo clic en "Archivo" y luego en
"Nuevo archivo". Luego, puedes escribir tu código en el editor de
código y ejecutarlo en la consola de IPython haciendo clic en el botón
"Ejecutar archivo" o presionando F5.

Spyder también tiene muchas otras características útiles, como la


exploración de variables, la integración con Git y la integración con
otras herramientas de ciencia de datos como Pandas, NumPy y
Matplotlib.

En resumen, Spyder es una herramienta muy útil para la programación


en Python, especialmente para la ciencia de datos. Puedes utilizarlo
para escribir, depurar y ejecutar código Python de manera interactiva,
lo que facilita el análisis de datos y la experimentación con diferentes
algoritmos.

16
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EL LENGUAJE PYTHON

Herramientas adicionales
Anaconda: es un entorno de trabajo que integra distribuciones de
Python y R que incluye un gestor de paquetes, un ambiente de
desarrollo integrado (IDE) y un conjunto de bibliotecas y herramientas
para análisis de datos, ciencia de datos e inteligencia artificial. Es una
herramienta muy útil para desarrolladores y científicos de datos, ya
que simplifica el proceso de instalación y configuración de Python y
de sus paquetes asociados, y permite crear y administrar fácilmente
múltiples entornos virtuales de Python. Además, Anaconda es
compatible con Windows, macOS y Linux, lo que hace que sea
fácilmente accesible para una amplia variedad de usuarios.

17
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EL LENGUAJE PYTHON

Síntesis general
● Fácil de aprender
● Multipropósito
● Comunidad activa y abundante
¿Por qué aprender Python? documentación
● Demanda en el mercado laboral
● Flexibilidad y eficiencia

● Análisis y visualización de datos


● Inteligencia artificial y machine
learning
● Desarrollo web y de aplicaciones
¿Para qué se utiliza python? ● Automatización de tareas y procesos
● Juegos y entretenimiento
● Cálculos científicos y matemáticos
● Administración de sistemas y redes
● Procesamiento de imágenes y video
● Robótica y control de dispositivos

● NumPy
● Pandas
Herramientas de python ● Matplotlib
para análisis de datos ● SciPy
● Scikit-learn

● Editor de código
● Depurador
Características de los IDE
● Integración con sistemas de control
de versiones

18
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EL LENGUAJE PYTHON

● Autocompletado
● Resaltado de sintaxis
● Navegación por el código
● Integración con herramientas
externas
● Plantillas de código
● Integración con documentación
● Personalización

19
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EL LENGUAJE PYTHON

Anexo Referencias

• "Python for Everybody" de Charles Severance.


Disponible en https://www.py4e.com/book

• "Think Python" de Allen B. Downey.


Disponible en https://greenteapress.com/wp/think-python-2e/

• Instalación de Jupyter Notebook


Disponible en
https://www.youtube.com/watch?v=dycl0bntMwo

• Sitio web Spyder


Disponible en https://www.spyder-ide.org/

• Anaconda
Disponible en https://www.anaconda.com/

• Instalación Anaconda (Python) en Windows y empezar a


programar (Spyder y Jupyter)
Disponible en https://www.youtube.com/watch?v=52h3r_lROGY

20
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EL LENGUAJE PYTHON

Módulo
FUNDAMENTOS DE PROGRAMACIÓN EN
PYTHON

21
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Módulo
FUNDAMENTOS DE PROGRAMACIÓN EN
PYTHON

0
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Aprendizaje Esperado 2
Codificar un programa utilizando las instrucciones básicas de control
de flujo de acuerdo a la sintaxis del lenguaje Python para construir un
algoritmo.

Instrucciones básicas de uso del lenguaje


Python 3.x
Instalar Python: Lo primero que necesitas hacer es instalar Python en
tu ordenador. Puedes descargar la versión más reciente de Python 3.x
desde la página oficial de Python:
https://www.python.org/downloads/

Abrir la consola: Para abrir la consola de Python, simplemente abre


una ventana del terminal (en Mac o Linux) o del símbolo del sistema
(en Windows) y escribe "python" o "python3". Se abrirá una ventana de
la consola de Python.

Ejecutar comandos: En la consola de Python, puedes ejecutar


comandos de Python. Por ejemplo, si escribes "print('Hola, mundo!')"
y presionas Enter, verás que la consola imprime "Hola, mundo!".

Instrucciones básicas para utilizar python en


Jupyter Notebook de Anaconda.
Instalar Anaconda: Lo primero que necesitas hacer es instalar
Anaconda en tu ordenador. Puedes descargar la versión más reciente

1
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

de Anaconda desde la página oficial:


https://www.anaconda.com/products/individual

Abrir Anaconda Navigator: Después de instalar Anaconda, abre el


programa "Anaconda Navigator". Deberías ver una lista de
aplicaciones, incluyendo Jupyter Notebook.

Abrir Jupyter Notebook: Haz clic en el botón "Launch" al lado de la


aplicación Jupyter Notebook. Se abrirá una nueva ventana de tu
navegador web predeterminado.

Crear un nuevo notebook: En la ventana de Jupyter Notebook, haz clic


en el botón "New" en la esquina superior derecha y selecciona "Python
3" para crear un nuevo notebook de Python.

Estructura y elementos del lenguaje Python.


Python es un lenguaje de programación informática que se clasifica
dentro del grupo de lenguajes de programación. Es considerado como
un lenguaje interpretado, de alto nivel, multiplataforma y
multiparadigma con tipado dinámico. A diferencia de otros lenguajes,
Python incluye reglas de estilo para que el código sea más fácil de
leer y estandarizado. Como ocurre en otros lenguajes de programación
de alto nivel, Python se compone de diferentes elementos que le
otorgan su estructura.

Algunos de los elementos que componen la estructura de Python son:


variables, operadores, estructuras de control de flujo (como
condicionales y bucles), funciones, módulos y paquetes. Además,
Python incluye una gran cantidad de librerías y herramientas que
hacen que su uso sea muy versátil, especialmente en el ámbito de la
ciencia de datos, el aprendizaje automático y la inteligencia artificial.

2
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Tipos de Datos
En Python, un tipo de dato es un concepto que se refiere a la
naturaleza de los datos que se utilizan en un programa. Cada valor en
Python tiene un tipo de dato, como números, cadenas de texto,
booleanos, listas, tuplas, diccionarios, conjuntos, entre otros.

Los tipos de datos en Python se pueden dividir en dos categorías


principales: tipos de datos básicos y tipos de datos estructurados.

Los tipos de datos básicos incluyen:

● Números: enteros (int), flotantes (float) y complejos (complex).


● Booleanos: Verdadero (True) y Falso (False).
● Cadenas de texto o strings: (str)

Los tipos de datos estructurados incluyen:

● Listas: (list)
● Tuplas: (tuple)
● Diccionarios: (dict)
● Conjuntos: (set)
● Otros tipos de datos estructurados como bytes, bytearray y
range.

Esta es la lista de los tipos de datos de Python.

3
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

La comprensión de los tipos de datos es fundamental en Python, ya


que permiten a los programadores manejar los datos de manera
eficiente y realizar operaciones específicas según la naturaleza de los
mismos.

Tipo de dato: String o cadena de caracteres


En Python, las secuencias o cadenas de caracteres son un tipo de dato
básico e imprescindible. Aunque su clase verdadera es str, son
comúnmente conocidas como strings. Formalmente, un string se
define como una secuencia inmutable de caracteres en formato
Unicode. Para crear un string en Python, simplemente se debe
encerrar una secuencia de caracteres entre comillas simples '' o dobles
"".

4
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Es posible utilizar ambos tipos de comillas indistintamente, pero es


importante tener en cuenta que si se necesita utilizar una comilla
simple dentro de la cadena de caracteres, existen dos opciones:
utilizar comillas dobles para encerrar el string o utilizar comillas
simples y anteponer el carácter \ a la comilla simple del interior de la
cadena. El proceso es similar en caso contrario.

Veamos todo esto con un ejemplo:

>>> hola = 'Hola "Pythonista"'


>>> hola_2 = 'Hola \'Pythonista\''
>>> hola_3 = "Hola 'Pythonista'"
>>> print(hola)
Hola "Pythonista"
>>> print(hola_2)
Hola 'Pythonista'
>>> print(hola_3)
Hola 'Pythonista'

A diferencia de otros lenguajes, en Python no existe el tipo «carácter».


No obstante, se puede simular con un string de un solo carácter:

>>> caracter_a = 'a'


>>> print(caracter_a)
a

Tipo de dato: Numérico


Python define tres tipos de datos numéricos básicos: enteros, números
de punto flotante (simulará el conjunto de los números reales, pero ya
veremos que no es así del todo) y los números complejos.

5
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

a. Números enteros

En Python, el tipo de dato para los números enteros es "int". Este tipo
de dato abarca todos los números enteros, pero su conjunto está
limitado por la capacidad de memoria disponible, ya que es infinito.
Python no impone un límite de representación para este tipo de dato.
Podemos crear un número "int" a partir de un literal que represente
un número entero, o bien, como resultado de una expresión o llamada
a una función.

El límite de representación es la cantidad de memoria que está


disponible en el sistema para almacenar valores enteros en Python.
La capacidad de memoria disponible es finita y, por lo tanto, limita el
rango de valores enteros que se pueden representar en una variable
"int" de Python.

Dicho esto, Python no impone un límite de representación para los


números enteros, lo que significa que la cantidad de valores que se
pueden representar depende de la cantidad de memoria disponible en
el sistema. En la práctica, esto significa que el límite de representación
dependerá de la arquitectura y recursos disponibles del equipo en el
que se ejecute el código.

En resumen, aunque el conjunto de números enteros es infinito, la


cantidad de valores que se pueden representar en Python está
limitada por la capacidad de memoria disponible en el sistema en el
que se esté trabajando.

Ejemplos

>>> a = -1 # a es de tipo int y su valor es -1

>>> b = a + 2 # b es de tipo int y su valor es 1

6
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

>>> print(b)

Podemos representar números enteros en diferentes formatos,


incluyendo binario, octal y hexadecimal. Para crear un número octal,
debemos anteponer "0o" a una secuencia de dígitos octales, mientras
que para un número hexadecimal debemos anteponer "0x" a una
secuencia de dígitos en hexadecimal. Para representar números en
binario, se utiliza "0b" antes de una secuencia de dígitos binarios.

>>> diez = 10
>>> diez_binario = 0b1010

>>> diez_octal = 0o12


>>> diez_hex = 0xa

>>> print(diez)
10

>>> print(diez_binario)

10

>>> print(diez_octal)

10

>>> print(diez_hex)

10

7
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

b. Números de punto flotante

En Python, el tipo de datos "float" se utiliza para representar números


de punto flotante. Los números de punto flotante se refieren a
números reales, es decir, números con una parte entera y una parte
decimal. El término "flotante" se refiere a la forma en que se
almacenan estos números en la memoria de una computadora: la
coma decimal (o punto decimal) puede "flotar" en cualquier posición,
lo que permite que se representen números extremadamente grandes
o pequeños.

En Python, los números "float" se crean a partir de un literal que


representa un número real o bien como resultado de una expresión o
una llamada a una función. El tipo de datos "float" es uno de los tipos
numéricos básicos en Python, junto con "int" (para números enteros) y
"complex" (para números complejos).

Cuando un número float vaya a ser usado por una persona, en lugar
de por el computador, puedes darle formato al número de la siguiente
manera:

>>> real = 1.1 + 2.2 # real es un float

>>> print(real)
3.3000000000000003 # Representación aproximada de 3.3

>>> print(f'{real:.2f}')

3.30 # real mostrando únicamente 2 cifras decimales

Al igual que los números enteros, un float se crea a partir de un literal,


o bien como resultado de una expresión o una función.
8
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

>>> un_real = 1.1 # El literal debe incluir el carácter .

>>> otro_real = 1/2 # El resultado de 1/2 es un float

>>> not_cient = 1.23E3 # float con notación científica (1230.0)

c. Números complejos

Python también cuenta con el tipo de dato numérico complejo,


complex, que se utiliza para representar números complejos que
constan de una parte real y una imaginaria, ambas representadas
como un número float. La sintaxis para crear un número complejo es:
<parte_real>+<parte_imaginaria>j, donde "j" se utiliza para indicar la
parte imaginaria. Es importante notar que la "j" debe ir después de la
parte imaginaria, de lo contrario Python arrojará un error de sintaxis.

Una vez creado el número complejo, se pueden acceder a sus partes


real e imaginaria a través de los atributos "real" e "imag". Por ejemplo,
si se tiene un número complejo llamado "z", se puede acceder a su
parte real con "z.real" y a su parte imaginaria con "z.imag". Es
importante recordar que los números complejos no son utilizados con
frecuencia en programación, pero pueden ser útiles en ciertas
aplicaciones matemáticas y científicas.

Los números complejos se utilizan en Python para resolver problemas


matemáticos que involucran cálculos con raíces cuadradas negativas.
En algunas ramas de las matemáticas y la física, las ecuaciones tienen
soluciones complejas, lo que significa que contienen raíces cuadradas
negativas.

Los números complejos permiten trabajar con estas soluciones sin


generar errores en los cálculos.
9
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

>>> complejo = 1+2j


>>> complejo.real

1.0
>>> complejo.imag

2.0

d. Aritmética de los tipos numéricos.

Con todos los tipos numéricos se pueden aplicar las operaciones de la


aritmética: suma, resta, producto, división.

En Python está permitido realizar una operación aritmética con


números de distinto tipo. En este caso, el tipo numérico «más
pequeño» se convierte al del tipo «más grande», de manera que el tipo
del resultado siempre es el del tipo mayor. Entendemos que el
tipo int es menor que el tipo float que a su vez es menor que el
tipo complex.

Por tanto, es posible, por ejemplo, sumar un int y un float:

>>> 1 + 2.0

3.0

>>> 2+3j + 5.7

(7.7+3j)

10
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Tipo de dato: Booleano


En Python, la clase "bool" representa los valores booleanos, que solo
pueden tomar dos valores: "True" para verdadero y "False" para falso.
Una característica particular del lenguaje es que cualquier objeto se
puede usar en un contexto booleano, lo que significa que cualquier
objeto se puede evaluar como verdadero o falso. Por lo tanto,
cualquier objeto se puede usar en una condición "if" o "while" (que son
estructuras de control que se explicarán en tutoriales posteriores) o
como operando en una operación booleana.

Por defecto, cualquier objeto es considerado como verdadero con dos


excepciones:

● Que implemente el método __bool__() y este devuelva False.


● Que implemente el método __len__() y este devuelva 0.

Además, los siguientes objetos/instancias también son consideradas


falsas:

● None
● False
● El valor cero de cualquier tipo numérico: 0, 0.0, 0j, …
● Secuencias y colecciones vacías (veremos estos tipos en otros
tutoriales): '', (), [], {}, set(), range(0)

Otros tipos de datos


Hasta este punto, hemos repasado los tipos de datos básicos de
Python. No obstante, este lenguaje de programación ofrece una
amplia variedad de tipos adicionales. Además de los tipos básicos,
otros tipos fundamentales de Python incluyen las secuencias (list y
tuple), los conjuntos (set) y los mapas (dict).

11
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

● List: una lista en Python es una secuencia ordenada de


elementos que pueden ser de cualquier tipo de dato, incluso
otra lista. Se representan utilizando corchetes [] y se pueden
modificar (agregar, eliminar o modificar elementos) después de
su creación.

● Tuple: una tupla en Python es una secuencia ordenada de


elementos, al igual que una lista, pero a diferencia de esta, una
tupla es inmutable, es decir, no puede ser modificada una vez
creada. Se representan utilizando paréntesis ().

● Set: un conjunto en Python es una colección desordenada de


elementos únicos, lo que significa que no puede haber
elementos duplicados en un conjunto. Se representan utilizando
llaves {} o la función set().

● Dict: un diccionario en Python es una colección desordenada de


elementos, donde cada elemento se compone de una clave y un
valor asociado. Se representan utilizando llaves {} y se pueden
modificar después de su creación. Las claves deben ser únicas,
pero los valores pueden ser cualquier tipo de dato.

>>> lista = [1, 2, 3, 8, 9]

>>> tupla = (1, 4, 8, 0, 5)

>>> conjunto = set([1, 3, 1, 4])

>>> diccionario = {'a': 1, 'b': 3, 'z': 8}

>>> print(lista)

[1, 2, 3, 8, 9]
>>> print(tupla)

(1, 4, 8, 0, 5)

>>> print(conjunto)
12
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

{1, 3, 4}
>>> print(diccionario)

{'a': 1, 'b': 3, 'z': 8}

Operadores y expresiones
En Python, los operadores son símbolos o palabras reservadas que se
utilizan para realizar operaciones en valores y variables. Por ejemplo,
el operador "+" se utiliza para sumar dos valores, mientras que el
operador "=" se utiliza para asignar un valor a una variable.

Las expresiones en Python son combinaciones de valores, variables y


operadores que se evalúan para producir un resultado. Por ejemplo, la
expresión "2 + 3" evalúa a 5, y la expresión "x = 5" asigna el valor 5 a
la variable "x".

En Python, hay varios tipos de operadores, incluyendo:

● Operadores aritméticos: se utilizan para realizar operaciones


matemáticas como suma (+), resta (-), multiplicación (*), división
(/) y módulo (%).
● Operadores de comparación: se utilizan para comparar dos
valores y devolver un valor Booleano (True o False) como
resultado. Algunos ejemplos son == (igual a), != (distinto de), <
(menor que) y > (mayor que).
● Operadores lógicos: se utilizan para combinar dos o más
expresiones lógicas y devolver un valor Booleano como
resultado. Algunos ejemplos son and (y), or (o) y not (no).
● Operadores de asignación: se utilizan para asignar valores a
variables. El operador de asignación básico es =, pero también
hay operadores compuestos como +=, -=, *= y /=.

13
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

● Operadores de pertenencia: son operadores que se utilizan para


comprobar si un valor determinado está presente en una
secuencia, como una lista, una tupla o un conjunto.
● Los operadores de identidad en Python se utilizan para
comparar la identidad de dos objetos, es decir, si se refieren al
mismo objeto en memoria.

Las expresiones pueden combinar diferentes tipos de operadores para


producir resultados más complejos. Por ejemplo, la expresión "x = (5
+ 3) * 2" evalúa a 16, porque primero suma 5 y 3, luego multiplica el
resultado por 2, y finalmente asigna el valor 16 a la variable "x".

Operadores Aritméticos

Un operador aritmético toma dos operandos como entrada, realiza un


cálculo y devuelve el resultado.

Considera la expresión, “a = 2 + 3”. Aquí, 2 y 3 son


los operandos y + es el operador aritmético. El resultado de la
operación se almacena en la variable a.

OPERADOR DESCRIPCIÓN USO

Realiza Adición entre los


+ operandos 12 + 3 = 15

Realiza Sustracción entre los


- operandos 12 - 3 = 9

Realiza Multiplicación entre los


* operandos 12 * 3 = 36

Realiza División entre los


/ operandos 12 / 3 = 4

14
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Realiza un módulo entre los


% operandos 16 % 3 = 1

Realiza la potencia de los


** operandos 12 ** 3 = 1728

Realiza la división con resultado


// de número entero 18 // 5 = 3

Para obtener el resultado en tipo flotante, uno de los operadores


también debe ser de tipo flotante.

Ejemplo:

>>> x = 7
>>> y = 2
>>> x + y # Suma
9
>>> x - y # Resta
5
>>> x * y # Producto
14
>>> x / y # División
3.5
>>> x % y # Resto
1
>>> x // y # Cociente
3
>>> x ** y # Potencia
15
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

49

Operadores de Comparación o Relacionales

Un operador relacional se emplea para comparar y establecer la


relación entre ellos. Devuelve un valor booleano (true o false) basado
en la condición.

OPERADOR DESCRIPCIÓN USO

Devuelve True si el operador de la 12 > 3


izquierda es mayor que el devuelve
> operador de la derecha True

Devuelve True si el operador de la 12 < 3


derecha es mayor que el operador devuelve
< de la izquierda False

12 == 3
Devuelve True si ambos operandos devuelve
== son iguales False

Devuelve True si el operador de la 12 >= 3


izquierda es mayor o igual que el devuelve
>= operador de la derecha True

Devuelve True si el operador de la 12 <= 3


derecha es mayor o igual que el devuelve
<= operador de la izquierda False

16
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

12 != 3
Devuelve True si ambos operandos devuelve
!= no son iguales True

Operadores Lógicos

Se utiliza un operador lógico para tomar una decisión basada en


múltiples condiciones. Los operadores lógicos utilizados en Python
son and, or y not.

OPERAD
OR DESCRIPCIÓN USO

Devuelve True si ambos operandos son a and


and True b

Devuelve True si alguno de los


or operandos es True a or b

Devuelve True si alguno de los


not operandos False not a

Operadores de Pertenencia

Un operador de pertenencia se emplea para identificar pertenencia en


alguna secuencia (listas, strings, tuplas).

in y not in son operadores de pertenencia.

• in devuelve un valor booleano True si el elemento está presente


en la secuencia, de lo contrario devuelve False.

17
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

• not in devuelve True si el valor especificado no se encuentra en


la secuencia. En caso contrario devuelve False.

OPERADOR DESCRIPCIÓN

Devuelve True si el valor especificado se


encuentra en la secuencia. En caso contrario
in devuelve False.

Devuelve True si el valor no se encuentra en una


Not in secuencia; False en caso contrario

Ejemplo:

>>> lista = [1, 3, 2, 7, 9, 8, 6]

>>> 4 in lista

False

>>> 3 in lista

True

>>> 4 not in lista

True

Operadores de Asignación

Se utiliza un operador de asignación para asignar valores a una


variable. Esto generalmente se combina con otros operadores (como
aritmética, bit a bit) donde la operación se realiza en los operadores y
el resultado se asigna al operando izquierdo.

Considera los siguientes ejemplos,


18
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

a = 18. Aquí = es un operador de asignación, y el resultado se


almacena en la variable a.

a + = 10. Aquí += es un operador de asignación, y el resultado se


almacena en la variable a. Es lo mismo que a = a + 10.

OPERADOR DESCRIPCIÓN

a = 5. El valor 5 es asignado a la
= variable a

+= a += 5 es equivalente a a = a + 5

-= a -= 5 es equivalente a a = a - 5

*= a *= 3 es equivalente a a = a * 3

/= a /= 3 es equivalente a a = a / 3

a %= 3 es equivalente a a = a %
%= 3

a **= 3 es equivalente a a = a **
**= 3

a //= 3 es equivalente a a = a //
//= 3

a &= 3 es equivalente a a = a &


&= 3

19
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

|= a |= 3 es equivalente a a = a | 3

^= a ^= 3 es equivalente a a = a ^ 3

a >>= 3 es equivalente a a = a >>


>>= 3

a <<= 3 es equivalente a a = a <<


<<= 3

Operadores de Identidad

Un operador de identidad se emplea para comprobar si dos variables


emplean la misma ubicación en memoria.

is y is not son operadores de identidad.

OPERADO
R DESCRIPCIÓN

Devuelve True si ambos operandos hacen referencia al


Is mismo objeto; False en caso contrario.

Devuelve True si ambos operandos no hacen referencia al


Is not mismo objeto; False en caso contrario.

20
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Ejemplo:

>>> x = 4

>>> y = 2

>>> lista = [1, 5]

>>> x is lista

False

>>> x is y

False

>>> x is 4

True

Expresiones
En Python, una expresión es una combinación de valores, variables y
operadores que producen un resultado. En otras palabras, una
expresión es cualquier parte de código que pueda ser evaluada y que
devuelva un valor.

Algunos elementos que pueden formar parte de una expresión son:


valores literales (como 2, "hola" o 5.7), variables, operadores y llama
das a funciones.

Por ejemplo, la expresión 4 * 3 - 2 entrega el valor 10 al ser evaluada


por el intérprete:

21
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

>>> 4 * 3 - 2

10

El valor de la siguiente expresión depende del valor que tiene la


variable n en el momento de la evaluación:

>>> n / 7 + 5

Una expresión está compuesta de otras expresiones, que son


evaluadas recursivamente hasta llegar a sus componentes más
simples, que son los literales y las variables.

Variables
En Python, una variable es un objeto que almacena un valor, el cual
puede ser de diferentes tipos de datos, como números, texto, listas,
entre otros. La variable se utiliza para hacer referencia al valor que
contiene, lo que permite al programador utilizar y manipular dicha
información en su código.

Las variables son importantes en Python porque permiten al


programador almacenar y manipular datos de manera dinámica en
tiempo de ejecución. Además, las variables pueden ser reutilizadas y
modificadas en diferentes partes del código, lo que ayuda a hacer el
código más eficiente y legible.

Python es un lenguaje de programación de tipado dinámico, lo que


significa que no es necesario especificar el tipo de dato de la variable

22
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

al momento de declararla. En cambio, el tipo de dato de la variable es


determinado automáticamente en tiempo de ejecución basado en el
valor asignado a la variable.

La sentencia de asignación crea nuevas variables y les da valores:

>>> mensaje = "¿Qué edad tienes?"

>>> n = 17

>>> pi = 3.14159

Este ejemplo hace tres asignaciones. La primera asigna la


cadena "¿Qué edad tienes?" a una nueva variable
denominada mensaje. La segunda le asigna el entero 17 a n, y la
tercera le da el número de punto flotante 3.14159 a pi.

No debe confundirse el operador de asignación, =, con el signo


de igualdad (aún y cuando se usa el mismo símbolo). El operador de
asignación enlaza un nombre, en el lado izquierdo del operador, con
un valor en el lado derecho. Esta es la razón por la que obtendrá un
error si escribe:

>>> 17 = n

Al leer o escribir código, dígase a sí mismo “n se le asigna 17” o “n


obtiene el valor de 17”. No diga “n es igual a 17”

Un método frecuente de representar variables en el papel es mediante


la escritura del nombre de la variable con una flecha que señala hacia
su valor. Este tipo de ilustración se conoce como diagrama de estado
debido a que exhibe el estado de cada una de las variables (piense en
los valores como el estado mental de las variables). De esta forma,
este diagrama presenta el resultado de las sentencias de asignación
previas.
23
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

message "¿Qué edad tienes?"

n 17

pi 3.1415

Si le preguntas a el intérprete para evaluar una variable, se producirá


el valor que está vinculado a la variable:

>> print(mensaje)

'¿Qué edad tienes?'

>>> print(n)

17

>>> print(pi)

3.14159

En cada caso el resultado es el valor de la variable. Las variables


también tienen tipos; nuevamente, le podemos preguntar al intérprete
cuáles son.

>>> type(mensaje)

<type 'str'>

>>> type(n)

<type 'int'>

>>> type(pi)

<type 'float'>

El tipo de una variable es el tipo del valor al que se refiere.


24
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Usamos las variables en un programa para “recordar” las cosas, al igual


que la puntuación actual en el partido de fútbol. Sin embargo, las
variables son variables. Esto significa que pueden cambiar con el
tiempo, al igual que el marcador de un partido de fútbol. Se puede
asignar un valor a una variable, y luego asignar un valor diferente a la
misma variable.

>>> dia = "Jueves"

>>> dia

'Jueves'

>>> dia = "Viernes"

>>> dia

'Viernes'

>>> dia = 21

>>> dia

21

Usted notará que se ha combinado el valor del ”dia” en tres ocasiones,


y en la tercera asignación nosotros le dimos un valor que era de un
tipo diferente.

Una gran parte de la programación se trata de que la computadora


pueda recordar las cosas, por ejemplo, el número de llamadas
perdidas es su teléfono, y la organización de alguna actualización o
cambio de la variable cuando se olvida otra llamada.

Nombres de variables válidos en Python debe ajustarse a las


siguientes tres simples reglas:
25
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

1. Son secuencias arbitrariamente largas de letras y dígitos.

2. La secuencia debe empezar con una letra.

3. Además de a..z, y A..Z, el guión bajo (_) es una letra.

Los programadores generalmente escogen nombres significativos


para sus variables — que especifique para qué se usa la variable.

Aunque es permitido usar letras mayúsculas, por convención no lo


hacemos. Si usted lo hace, recuerde que las letras mayúsculas
importan, Pedro y pedro son variables diferentes.

El carácter subrayado (_) puede aparecer en un nombre. A menudo se


usa en nombres con múltiples palabras, tales
como mi_nombre ó ́ precio_de_la_porcelana_en_china.

26
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Hay algunas situaciones en las que los nombres que comienzan con
un guión tienen un significado especial, por lo que una regla segura
para los principiantes es empezar todos los nombres con una letra que
no sea un guión.

Si usted le da un nombre inválido a una variable obtendrá un error de


sintaxis:

>>> 76trombones = "gran desfile"

SyntaxError: invalid syntax

>>> mas$ = 1000000

SyntaxError: invalid syntax

>>> class = "Informática 101"

SyntaxError: invalid syntax

76trombones es inválido porque no empieza con una letra. mas$ es


inválido porque contiene un carácter ilegal, por el símbolo de dolar $.
PerPero, ¿Qué sucede con class?

Resulta que class es una de las palabras claves de Python. Las


palabras claves definen las reglas del lenguaje y su estructura, y no
pueden ser usadas como nombres de variables.

Python tiene 35 palabras reservadas (keywords) en su sintaxis. Estas


palabras tienen un significado especial en el lenguaje y no se pueden
utilizar como nombres de variables u otras entidades en el código.

Los programadores generalmente eligen nombres para sus variables


que son significativas para los lectores humanos del programa — que
27
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

ayudan a los documentos de programación, o recordar, lo que la


variable se utiliza.

Conversiones de tipos o cast


En Python, hacer un "cast" se refiere a convertir un objeto de un tipo
de datos a otro. Por ejemplo, si tenemos una variable que contiene un
número en formato de cadena (string), podemos hacer un "cast" a un
número entero (int) para poder realizar operaciones aritméticas con
él.

Pero antes de nada, veamos los diferentes tipos de cast o conversión


de tipos que se pueden hacer. Existen dos:

● Conversión implícita: Es realizada automáticamente por Python.


Sucede cuando realizamos ciertas operaciones con dos tipos
distintos.

● Conversión explícita: Es realizada expresamente por nosotros,


como por ejemplo convertir de str a int con str().

Conversión implícita

Esta conversión de tipos es realizada automáticamente por Python,


prácticamente sin que nos demos cuenta. Aún así, es importante saber
lo que pasa por debajo para evitar problemas futuros.

El ejemplo más sencillo donde podemos ver este comportamiento es


el siguiente:

a = 1 # <class 'int'>
b = 2.3 # <class 'float'>

a=a+b
print(a) # 3.3
28
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

print(type(a)) # <class 'float'>

Pero si sumamos a y b y almacenamos el resultado en a, podemos ver


como internamente Python ha convertido el int en float para poder
realizar la operación, y la variable resultante es float

Sin embargo hay otros casos donde Python no es tan listo y no es


capaz de realizar la conversión. Si intentamos sumar un int a un string,
tendremos un error TypeError.

a=1
b = "2.3"
c=a+b
# TypeError: unsupported operand type(s) for +: 'int' and 'str'

Si te das cuenta, es lógico que esto sea así, ya que en este


caso b era "2.3", pero ¿y si fuera "Hola"? ¿Cómo se podría sumar eso?
No tiene sentido.

Conversión explícita

Por otro lado, podemos hacer conversiones entre tipos o cast de


manera explícita haciendo uso de diferentes funciones que nos
proporciona Python. Las más usadas son las siguientes:

● float(), str(), int(), list(), set()


● Y algunas otras como hex(), oct() y bin()

Convertir float a int

Para convertir de float a int debemos usar float(). Pero mucho


cuidado, ya que el tipo entero no puede almacenar decimales, por lo
que perderemos lo que haya después de la coma.

a = 3.5
29
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

a = int(a)
print(a)
# Salida: 3

Convertir float a string

Podemos convertir un float a string con str(). Podemos ver en el


siguiente código como cambia el tipo de a después de hacer el cast.

a = 3.5
print(type(a)) # <class 'float'>
a = str(a)
print(type(a)) # <class 'str'>

Convertir string a float

Podemos convertir un string a float usando float(). Es importante


notar que se usa el . como separador.

a = "35.5"

print(float(a))

# Salida: 35.5

El siguiente código daría un error, dado que , no se reconoce por


defecto como separador decimal.

a = "35,5"

print(float(a))

# Salida: ValueError: could not convert string to float: '35,5'

30
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Y por último, resulta obvio pensar que el siguiente código dará un


error también.

a = "Python"

print(float(a))

# Salida: ValueError: could not convert string to float: 'Python'

Convertir string a int

Al igual que la conversión a float del caso anterior, podemos convertir


de string a int usando int().

a = "3"

print(type(a)) # <class 'str'>

a = int(a)

print(type(a)) # <class 'int'>

Cuidado ya que no es posible convertir a int cualquier valor.

a = "Python"

a = int(a)

# ValueError: invalid literal for int() with base 10: 'Python'

Convertir int a string

La conversión de int a string se puede realizar con str().

31
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

A diferencia de otras conversiones, esta puede hacerse siempre, ya que


cualquier valor entero que se nos ocurra poner en a, podrá ser
convertido a string.

a = 10

print(type(a)) # <class 'int'>

a = str(a)

print(type(a)) # <class 'str'>

Convertir a list

Es también posible hacer un cast a lista, desde por ejemplo un set.


Para ello podemos usar list().

a = {1, 2, 3}

b = list(a)

print(type(a)) # <class 'set'>

print(type(b)) # <class 'list'>

Convertir a set

Y de manera completamente análoga, podemos convertir


de lista a set haciendo uso de set().

a = ["Python", "Mola"]

b = set(a)

32
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

print(type(a)) # <class 'list'>

print(type(b)) # <class 'set'>

33
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Entrada y Salida de Datos

La interacción con el usuario es una característica fundamental en


todo lenguaje de programación. La interacción con el usuario permite
a los programas ser más útiles y accesibles, ya que los usuarios pueden
proporcionar información y recibir resultados de manera más efectiva.

Además, la interacción con el usuario también es esencial para la


depuración y el desarrollo de software, ya que los programadores
pueden recibir comentarios y depurar problemas más fácilmente al
permitir que los usuarios interactúen con el software en diferentes
situaciones. En general, la interacción con el usuario es clave para
crear programas más efectivos y útiles.

Entrada Estándar

Para pedir información al usuario, debe utilizar las funciones


integradas en el intérprete del lenguaje, así como los argumentos de
línea de comandos.

Ejemplo de la función input:

La función input() siempre devuelve un valor numérico:

>>> edad = input('Ana: ¿Que edad tiene usted?: ')


Ana: ¿Que edad tiene usted?: 38
>>> print(edad)
38

34
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Entrada por Script

Se basan en escribir todas las instrucciones en archivos


llamados scripts, que no es más que guiones de instrucciones. Luego
se envía este archivo al intérprete como parámetro desde la terminal
de comando (si es un lenguaje interpretado como Python) y éste
ejecutará todas las instrucciones en bloque.

A parte de ser la base del funcionamiento de los programas, la


característica de los scripts es que pueden recibir datos desde la
propia terminal de comando en el momento de la ejecución, algo muy
útil para agregar dinamismo los scripts a través de parámetros
personalizables.

A continuación, un ejemplo el cual simula una sala de chat, validando


datos de entradas numérico y tipo cadena de caracteres e interactúa
con el usuario y en base a condicionales muestra un mensaje.

print("\nSimulando un chat")
print("=====================")

print("\nSala de chat > De 30 a 40 años")


print("------------------------------\n")

print('Ana: ¿Cómo se llama usted?: ')


nombre = input('Yo: ')
print('Ana: Hola', nombre, ', encantada de conocerte :3')

print('Ana: ¿Que edad tiene usted?: ')


edad = input('Yo: ')
print(“Usted tiene', edad, ', y yo ya no digo mi edad”)

print('Ana: ¿Tiene Webcam?, ingrese "si" o "no", por favor!: ')


35
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

tiene_WebCam = input('Yo: ')

if tiene_WebCam in ('s', 'S', 'si', 'Si', 'SI'):


print("Ponga la WebCam para verle :-D")
elif tiene_WebCam in ('n', 'no', 'No', 'NO'):
print("Lastima por usted :'( Adiós")

Salida Estándar

Comúnmente, para mostrar información por pantalla en una consola


de comando, se utiliza la sentencia print. Esta permite imprimir texto
y variables en conjunto, siendo separados por comas.

Sentencia print
Sentencia print evalúa cada expresión, devuelve y escribe el objeto
resultado a la salida estándar de la consola de comando. Si un objeto
no es un tipo cadena de caracteres, ese es primeramente convertido a
un tipo cadena de caracteres usando las reglas para las conversiones
del tipo. La cadena de caracteres (resultado u original) es entonces
escrito.

Entonces para mostrar mensajes en pantalla, se utiliza el uso de la


sentencia print.

Ejemplo del uso de la sentencia print:

>>> print('Ana: Hola', nombre, ', encantada de conocerte :3')


Ana: Hola Leonardo , encantado de conocerte :3

Formato de impresión de cadena


En la sentencia print se pueden usar el formato de impresión
alternando las cadenas de caracteres y variables:
36
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

>>> tipo_calculo = "raíz cuadrada de dos"


>>> valor = 2**0.5
>>> print("el resultado de", tipo_calculo, "es:”) valor
el resultado de raíz cuadrada de dos es: 1.41421356237

Control de Flujo
Un programa en Python consiste en una serie de instrucciones que son
analizadas y ejecutadas por el intérprete, en el orden en que están
escritas en el código fuente. Una vez que todas las instrucciones se
han ejecutado, el programa termina.

Sin embargo, es posible modificar el flujo natural del programa


utilizando herramientas como estructuras de control de flujo. Estas
permiten saltarse ciertas partes de código bajo ciertas condiciones,
repetir un conjunto de instrucciones varias veces, entre otras
funcionalidades.

Condicionales
Las estructuras de control condicionales en programación nos
permiten evaluar si una o varias condiciones se cumplen para decidir
qué acción ejecutar. La evaluación de condiciones solo arroja dos
resultados: verdadero o falso (True o False).

En la vida diaria, utilizamos la evaluación de condiciones con mayor


frecuencia de lo que pensamos, por ejemplo, si el semáforo está en
verde, cruzamos la calle, sino, esperamos a que cambie. A veces,
también es necesario evaluar más de una condición para tomar una
decisión, como por ejemplo, pagar la factura de la luz si llega y si
tengo dinero disponible.

37
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Para describir la evaluación a realizar sobre una condición, se utilizan


operadores relacionales (o de comparación).

Y para evaluar más de una condición simultáneamente, se utilizan


operadores lógicos.

Las estructuras de control de flujo condicionales, se definen mediante


el uso de tres palabras claves reservadas, del lenguaje: if (si), elif (sino,
si) y else (sino).

If – elif - else

Ejemplo: Si el semáforo está en verde, cruzar la calle. Sino, esperar.

if semaforo == verde:
print("Cruzar la calle")
else:
print("Esperar")

Si gasto hasta $100, pago con dinero en efectivo. Sino, si gasto más
de $100 pero menos de $300, pago con tarjeta de débito. Sino, pago
con tarjeta de crédito.

if compra <= 100:


print("Pago en efectivo")
elif compra > 100 and compra < 300:
print("Pago con tarjeta de débito")
else:
print("Pago con tarjeta de crédito")

Si la compra es mayor a $100, obtengo un descuento del 10%

importe_a_pagar = total_compra

if total_compra > 100:

38
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

tasa_descuento = 10 importe_descuento = total_compra *


tasa_descuento / 100 importe_a_pagar = total_compra –
importe_descuento

39
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Instrucciones Cíclicas - Iteraciones


En Python, las iteraciones se refieren al proceso de repetir un conjunto
de instrucciones varias veces. Esto se logra mediante el uso de bucles,
que son estructuras de control que permiten repetir una sección de
código varias veces, hasta que se cumpla una determinada condición.

En el bucle for, se especifica una secuencia de valores, y se ejecuta


una serie de instrucciones para cada valor en la secuencia. El bucle
while, por otro lado, ejecuta una serie de instrucciones mientras una
condición especificada sea verdadera.

Las iteraciones son una parte fundamental de la programación, ya que


permiten realizar tareas repetitivas de manera eficiente y reducir la
cantidad de código necesaria para realizar una tarea en particular.

Bucle While

Este bucle, se encarga de ejecutar una misma acción “mientras que”


una determinada condición se cumpla:

Mientras que año sea menor o igual a 2012, imprimir la frase


“Informes del Año año”

anio = 2001
while anio <= 2012:
print("Informes del Año", str(anio))
anio += 1

La iteración anterior, generará la siguiente salida:

40
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Si miras la última línea: anio += 1

Podrás notar que en cada iteración, incrementamos el valor de la


variable que condiciona el bucle (anio). Si no lo hiciéramos, esta
variable siempre sería igual a 2001 y el bucle se ejecutará de forma
infinita, ya que la condición (anio <= 2012) siempre se estaría
cumpliendo.

Pero ¿Qué sucede si el valor que condiciona la iteración no es


numérico y no puede incrementarse? En ese caso, podremos utilizar
una estructura de control condicional, anidada dentro del bucle, y
frenar la ejecución cuando el condicional deje de cumplirse, con la
palabra clave reservada break:

while True:
nombre = input("Indique su nombre: ")
if nombre: break

El bucle anterior, incluye un condicional anidado que verifica si la


variable nombre es verdadera (sólo será verdadera si el usuario tipea
un texto en pantalla cuando el nombre le es solicitado). Si es
verdadera, el bucle para (break). Sino, seguirá ejecutándose hasta que
el usuario ingrese un texto en pantalla.
41
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Bucle For

El bucle "for" en Python es una estructura de control que permite iterar


sobre una secuencia de elementos y ejecutar un bloque de código para
cada elemento en la secuencia. Por ejemplo:

Por cada nombre en mi_lista, imprimir nombre

mi_lista = ['Juan', 'Antonio', 'Pedro', 'Herminio']


for nombre in
mi_lista: print(nombre)

Por cada color en mi_tupla, imprimir color

mi_tupla = ('rosa', 'verde', 'celeste', 'amarillo')


for color in mi_tupla:
print(color)

En los ejemplos anteriores, nombre y color, son dos variables


declaradas en tiempo de ejecución (es decir, se declaran
dinámicamente durante el bucle), asumiendo como valor, el de cada
elemento de la lista (o tupla) en cada iteración.

Otra forma de iterar con el bucle for, puede emular a while:

Por cada año en el rango 2001 a 2013, imprimir la frase “Informes del
Año año”

for anio in range(2001, 2013):


print("Informes del Año", str(anio))

Información adicional: PEP-8

42
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

PEP 8 es una guía de estilo para la escritura de código Python, que se


centra en la legibilidad y la consistencia del código. Fue creado por
Guido van Rossum, el creador de Python, y describe las prácticas
recomendadas para escribir código Python que sea fácil de leer y
mantener.

Algunos de los puntos clave de PEP 8 son:

● El código debe estar escrito en minúsculas, con palabras


separadas por guiones bajos.
● Las constantes deben estar en mayúsculas.
● Los nombres de las funciones y variables deben ser descriptivos
y usar nombres en inglés.
● Los comentarios deben ser claros y concisos, y no deberían
explicar el código obvio.
● Las líneas de código no deben superar los 79 caracteres,
excepto en casos especiales.
● Las indentaciones deben usar cuatro espacios en lugar de
tabuladores.
● Se deben dejar dos líneas en blanco entre las definiciones de las
funciones y una línea en blanco entre las definiciones de las
clases.

Siguiendo estas prácticas recomendadas, el código Python se volverá


más fácil de leer y mantener, lo que puede ahorrar tiempo y esfuerzo
a largo plazo.

43
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Programas en Python
Python es un lenguaje de programación que se utiliza para escribir
programas en un ordenador. Un programa de Python es un conjunto
de instrucciones que se utilizan para realizar una tarea específica y se
escriben en un archivo de texto plano con la extensión ".py". Los
programas de Python pueden variar en tamaño, desde pequeños
scripts para realizar tareas simples hasta grandes aplicaciones
complejas. A diferencia de otros lenguajes de programación, Python
está diseñado para ser fácil de leer y escribir, lo que lo hace ideal para
principiantes en programación. Esto se debe en gran parte a su
sintaxis simple y clara, y a su uso de sangrías en lugar de corchetes
para definir bloques de código.

Las funciones son una característica importante de Python, que nos


permiten dividir el código en secciones lógicas y reutilizables. Esto
significa que podemos escribir una función para realizar una tarea
específica y luego llamarla en diferentes partes del programa según
sea necesario. Las funciones pueden ser de gran ayuda para organizar
el código y hacerlo más fácil de entender y mantener.

Funciones
En Python, las funciones son bloques de código reutilizables que
realizan tareas específicas y pueden aceptar argumentos y devolver
valores.

Las funciones son una herramienta fundamental en la programación


de Python y son utilizadas ampliamente para modularizar el código,
simplificar su mantenimiento y reutilizar el código en diferentes
partes de un programa o en diferentes programas.

44
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Algunas características son:

● Dividir y organizar el código en partes más sencillas.

● Encapsular el código que se repite a lo largo de un programa


para ser reutilizado.

En Python, ya se definen de serie un conjunto de funciones que


podemos utilizar directamente en nuestras aplicaciones. Por ejemplo,
podemos utilizar la función len() para obtener el número de elementos
de un objeto contenedor, como una lista, una tupla, un diccionario o
un conjunto. También hemos visto la función print(), que nos permite
mostrar por consola un texto. Estas funciones son ejemplos de las
muchas que Python ofrece para simplificar el proceso de
programación y ayudar a los programadores a escribir código más
eficiente y efectivo.

Para definir una función en Python, se utiliza la palabra reservada


"def". Luego, se escribe el nombre o identificador de la función, que
es utilizado para invocarla. Después del nombre, se deben incluir los
paréntesis, y opcionalmente, una lista de parámetros que la función
puede aceptar. La definición de la función termina con dos puntos.

Después de los dos puntos, se incluye el cuerpo de la función, el cual


se identifica mediante un sangrado mayor, generalmente de cuatro
espacios. Este cuerpo consiste en un conjunto de instrucciones que
están encapsuladas en la función y que le dan sentido.

Por último, y de manera opcional, se puede incluir la instrucción


"return" para devolver un resultado específico. La palabra reservada
"return" permite que una función devuelva un valor o conjunto de
valores después de ejecutar su cuerpo.

En resumen, se han corregido algunos errores de redacción y se ha


mejorado la claridad y la estructura del párrafo para facilitar su
45
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

comprensión. Las ideas principales se refieren a la sintaxis y la


estructura básica de una función en Python, así como a la inclusión de
una instrucción "return" para devolver un resultado.

Parámetros.
Un parámetro de una función es una variable que se utiliza para recibir
valores o argumentos de entrada cuando se invoca la función. Los
parámetros se definen en la definición de la función y pueden ser
opcionales o requeridos.

En Python, los parámetros se incluyen entre los paréntesis que siguen


al nombre de la función. Pueden especificarse con un valor
predeterminado, en cuyo caso se consideran opcionales y no es
necesario proporcionar un valor al llamar la función. Si no se
especifica un valor predeterminado, el parámetro se considera
requerido y se debe proporcionar un valor al llamar la función.

Por ejemplo, en la siguiente definición de función, "nombre" y "edad"


son los parámetros:

def saludar(nombre, edad=30):


print("Hola, mi nombre es", nombre, "y tengo", edad, "años.")

En este caso, "nombre" es un parámetro requerido, mientras que


"edad" es opcional y tiene un valor predeterminado de 30. Por lo tanto,
si llamamos a la función con un solo argumento:

saludar("Juan")

46
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

La salida sería "Hola, mi nombre es Juan y tengo 30 años.", ya que se


usa el valor predeterminado para la edad. Pero si proporcionamos un
segundo argumento:

saludar("Juan", 25)

La salida sería "Hola, mi nombre es Pedro y tengo 25 años.", ya que se


usa el valor proporcionado para la edad.

Funciones nativas de Python

Las funciones nativas de Python son funciones incorporadas en el


lenguaje de programación Python y están disponibles para su uso sin
necesidad de importar ninguna biblioteca externa. Estas funciones se
pueden usar directamente en cualquier programa de Python y son
ampliamente utilizadas por los programadores de Python.

Función max()

Devuelve el elemento más grande en un iterable o el más grande de


dos o más argumentos

Esta función toma dos o más números o cualquier tipo de iterable


como argumento. Mientras damos un iterable como argumento,
debemos asegurarnos de que todos los elementos del iterable sean
del mismo tipo. Esto significa que no podemos pasar una lista que
tenga almacenados valores enteros y de cadena. Sintaxis: max
(iterable, * iterables [, clave, predeterminado]) max (arg1, arg2, * args
[, clave])

47
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Se devuelve el elemento más grande del iterable. Si se proporcionan


dos o más argumentos posicionales, se devuelve el mayor de los
argumentos posicionales. Si el iterable está vacío y no se proporciona
el valor predeterminado, se genera un ValueError.

Función min()

Devuelve el elemento más pequeño en un iterable o el más pequeño


de dos o más argumentos

Esta función toma dos o más números o cualquier tipo de iterable


como argumento. Mientras damos un iterable como argumento,
debemos asegurarnos de que todos los elementos del iterable sean
del mismo tipo. Esto significa que no podemos pasar una lista que
tenga almacenados valores enteros y de cadena.

Se devuelve el elemento más pequeño del iterable. Si se proporcionan


dos o más argumentos posicionales, se devuelve el más pequeño de
los argumentos posicionales. Si el iterable está vacío y no se
proporciona el valor predeterminado, se genera un ValueError.

48
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Ejemplo:

Función divmod ()

Devuelve el cociente y el resto al dividir el número a por el número b.


Toma dos números como argumentos a & b. El argumento no puede
ser un número complejo.

Se necesitan dos argumentos a & b: un número entero o un número


decimal. No puede ser un número complejo.

El valor de retorno será el par de números positivos que consiste en


el cociente y el resto obtenido al dividir a por b. En el caso de tipos de
operandos mixtos, se aplicarán las reglas para los operadores
aritméticos binarios.

Para los argumentos de números enteros, el valor de retorno será el


mismo que (a // b, a % b).

Para los argumentos de números decimales, el valor devuelto será el


mismo que (q, a % b), donde q es normalmente math.floor (a / b) pero
puede ser 1 menos que eso.

Ejemplo:

49
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Función len()

Este método devuelve la longitud (el número de elementos) de un


objeto. Toma un argumento x

Esta función toma un argumento, x. Este argumento puede ser una


secuencia (como un string, bytes, tupla, lista o rango) o una colección
(como un diccionario, conjunto o conjunto congelado).

Esta función devuelve el número de elementos del argumento que se


pasa a la función len().

Ejemplo:

50
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Función Ord

Utilizada para convertir la cadena que representa un carácter Unicode


en un entero que representa el código Unicode del carácter.

Ejemplos:

Función chr

Utilizada para convertir el número entero que representa el código


Unicode en una cadena que representa un carácter correspondiente.

Ejemplo:

Hay que tener en cuenta que, si el valor entero pasado a chr() está
fuera del rango, entonces se generará un ValueError.

51
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Función input

Muchas veces, en un programa necesitamos alguna información del


usuario. Recibir información del usuario hace que el programa se
sienta interactivo. En Python, para recibir datos del usuario tenemos
la función input(). Si se llama a la función input, el flujo del programa
se detendrá hasta que el usuario haya introducido la información y
haya finalizado la introducción de información con la tecla de retorno.
Veamos algunos ejemplos:

Cuando sólo queremos recibir información:

inp = input()

Para mostrar en la línea de comandos un mensaje:

promptwithmessage = input(’‘)

Cuando queremos tomar un número entero como información:

Llamada a una función


Para usar o invocar a una función, simplemente hay que escribir su
nombre como si de una instrucción más se tratara. Eso sí, pasando los
argumentos necesarios según los parámetros que defina la función.

Ejemplo: Crear una función que muestra por pantalla el resultado de


multiplicar un número por cinco:

52
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

La función multiplica_por_5() define un parámetro


llamado número que es el que se utiliza para multiplicar por 5. El
resultado del programa anterior sería el siguiente:

Como se puede observar, el programa comienza su ejecución en


la línea 4 y va ejecutando las instrucciones una a una de manera
ordenada. Cuando se encuentra el nombre de la
función multiplica_por_5(), el flujo de ejecución pasa a la primera
instrucción de la función. Cuando se llega a la última instrucción de
la función, el flujo del programa sigue por la instrucción que hay a
continuación de la llamada de la función.

Sentencia return
Anteriormente se indicaba que cuando acaba la última instrucción de
una función, el flujo del programa continúa por la instrucción que
sigue a la llamada de dicha función. Hay una excepción: usar la
sentencia return. return hace que termine la ejecución de la función
cuando aparece y el programa continúa por su flujo normal.
53
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Además, return se puede utilizar para devolver un valor.

La sentencia return es opcional, puede devolver, o no, un valor y es


posible que aparezca más de una vez dentro de una misma función.

A continuación algunos ejemplos:

Return que no devuelve ningún valor

La siguiente función muestra por pantalla el cuadrado de un número


solo si este es par:

Varios return en una misma función

La función es_par() devuelve True si un número es par y False en caso


contrario:

54
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Devolver más de un valor con return

En Python, es posible devolver más de un valor con una sola


sentencia return. Por defecto, con return se puede devolver una tupla
de valores. Un ejemplo sería la siguiente
función cuadrado_y_cubo() que devuelve el cuadrado y el cubo de un
número:

Sin embargo, se puede usar otra técnica devolviendo los diferentes


resultados/valores en una lista. Por ejemplo, la
función tabla_del() que se muestra a continuación hace esto:

55
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Importación y llamado de módulos,


organizando tu código con módulos en
Python
Un módulo en Python es una herramienta fundamental para organizar
tu código de forma lógica y estructurada. Al agrupar el código
relacionado en un módulo, se logra que el mismo sea más fácil de
entender y utilizar. En términos simples, un módulo es un objeto de
Python que contiene atributos con nombres arbitrarios y que pueden
ser enlazados y referenciados en cualquier momento.

Para crear un módulo en Python, simplemente se necesita crear un


archivo que contenga código Python. En dicho archivo se pueden
definir funciones, clases y variables, así como también se puede incluir
código ejecutable. De esta manera, al importar el módulo en otro
archivo, se pueden utilizar las funciones, clases y variables definidas
en el mismo para hacer el código más legible y modular.

Ejemplo

El código de Python para un módulo llamado aname normalmente


reside en un archivo llamado aname.py.

La declaración import

Puede usar cualquier archivo fuente de Python como módulo


ejecutando una declaración de importación en algún otro archivo
fuente de Python. La importación tiene la siguiente sintaxis:

56
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Cuando el intérprete encuentra una declaración de importación,


importa el módulo si el módulo está presente en la ruta de búsqueda.
Una ruta de búsqueda es una lista de directorios que el intérprete
busca antes de importar un módulo. Un módulo se carga solo una vez,
independientemente de la cantidad de veces que se importe. Esto
evita que la ejecución del módulo ocurra una y otra vez si se producen
múltiples importaciones.

La declaración from

La declaración from de Python le permite importar atributos


específicos de un módulo al espacio de nombres actual. La
importación from … tiene la siguiente sintaxis:

Por ejemplo, para importar la función fibonacci del módulo fib, use la
siguiente declaración:

Esta declaración no importa la totalidad del módulo fib en el espacio


de nombres actual; simplemente introduce el elemento fibonacci del
módulo fib en la tabla de símbolos globales del módulo de
importación.

La declaración from … import*

También es posible importar todos los nombres de un módulo al


espacio de nombres actual utilizando la siguiente declaración de
importación:

57
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Esto proporciona una manera fácil de importar todos los elementos de


un módulo al espacio de nombres actual; sin embargo, esta
declaración debe usarse con moderación.

58
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Búsqueda de módulos
Cuando se importa un módulo en Python, el intérprete busca en una
serie de lugares predefinidos para encontrarlo. El proceso de
búsqueda se realiza en los siguientes pasos:

● El intérprete primero busca en la cache interna de módulos para


ver si el módulo ya ha sido cargado previamente en la sesión
actual. Si el módulo ya está en la caché, se utiliza directamente.
● Si el módulo no se encuentra en la caché, el intérprete busca en
los directorios predefinidos en la variable de entorno
"PYTHONPATH". Esta variable contiene una lista de directorios
separados por el sistema operativo específico (por ejemplo, ":"
en sistemas Unix y ";" en sistemas Windows).
● Si el módulo no se encuentra en los directorios definidos en
"PYTHONPATH", el intérprete busca en los directorios
predefinidos por el propio Python. Estos directorios incluyen el
directorio de instalación de Python, la biblioteca estándar de
Python y cualquier otra biblioteca de terceros que se haya
instalado.
● Si el módulo sigue sin encontrarse, se produce una excepción
de "ImportError" que indica que el módulo no se ha encontrado.

En resumen, Python busca primero en la caché de módulos, luego en


los directorios definidos en "PYTHONPATH" y finalmente en los
directorios predefinidos por Python. Si el módulo no se encuentra en
ninguno de estos lugares, se produce una excepción de importación.

59
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Paquetes de Python.
Un paquete es una estructura de directorio de archivos jerárquica que
define un único entorno de aplicación de Python que consta de
módulos y sub paquetes y subpaquetes, y así sucesivamente.

Considere un archivo Pots.py disponible en un directorio /Phone. Este


archivo tiene la siguiente línea de código fuente:

De manera similar, tenemos otros dos archivos que tienen diferentes


funciones con el mismo nombre que el anterior:

Phone/Isdn.py archivo con la función Isdn()


Phone/G3.py archivo con la función G3()

Ahora crea un archivo __init__.py en el directorio /Phone

Phone/__init__.py

Para que todas sus funciones estén disponibles cuando haya


importado el paquete, debe poner instrucciones de importación
explícitas en __init__.py de la siguiente manera:

60
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Después de agregar estas líneas a __init__.py, tiene todas estas clases


disponibles cuando importa el paquete Phone.

Cuando se ejecuta el código anterior, produce el siguiente resultado:

En el ejemplo anterior, hemos tomado el ejemplo de una sola función


en cada archivo, pero puede mantener múltiples funciones en sus
archivos. También puede definir diferentes clases de Python en esos
archivos y luego puede crear sus paquetes a partir de esas clases.

Invocación y rango de una función.


La clase range.

En Python, el tipo de dato "range" representa una secuencia de


números inmutable que se utiliza comúnmente en estructuras de
control de flujo y ciclos. La sintaxis de la función range es range(start,
stop, step), donde start es el número inicial de la secuencia, stop es el
número final (no incluido) y step es el incremento entre los números
de la secuencia. Al utilizar la función range, se genera un objeto de
61
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

tipo range que puede ser utilizado para iterar sobre la secuencia de
números en ciclos "for" o en estructuras de control de flujo "if".
Además, a partir de Python 3, el tipo range es más eficiente en
términos de memoria que la generación de una lista completa de
números.

Para crear un objeto de tipo range, se pueden usar dos constructores :

● range(fin): Crea una secuencia numérica que va desde 0 hasta fin


- 1.
● range(inicio, fin, [paso]): Crea una secuencia numérica que va
desde inicio hasta fin - 1. Si además se indica el parámetro paso,
la secuencia genera los números de paso en paso.

Veámoslo con un ejemplo:

¿Por qué estamos utilizando en los ejemplos la clase range como


argumento de list? range, además de un tipo secuencial es un
tipo iterable con una particularidad: a diferencia de los
tipos list o tuple, range calcula los ítems al vuelo, cuando los necesita.
Cómo list acepta un objeto iterable como parámetro, por eso pasó un
objeto range al constructor de list, para que se muestre por pantalla la
secuencia completa que se genera con range.

62
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Recorrer una secuencia numérica

Uno de los principales usos de range() es utilizarlo en bucles for.

Ventajas de utilizar range

La principal ventaja de usar range sobre list o tuple es que es un


iterable que genera los elementos solo en el momento en que
realmente los necesita. Esto implica que usa una cantidad de memoria
mínima, por muy grande que sea el rango de números que represente.

Veamos una comparación de una lista que almacena los números del
0 al 100.000 y un rango del 0 al 100.00

63
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Como puedes apreciar, la lista ocupa casi 1 MB en memoria frente a


los 48 bytes que ocupa el rango.

Operaciones de la clase range

Al tratarse de un tipo secuencial, range implementa las operaciones


básicas de ese tipo a excepción de la concatenación y la repetición:

Recuerda, usa la clase range para generar secuencias de números,


especialmente si las necesitas en un bucle for.

Los módulos
Cuando creas programas en Python, los archivos generados suelen
tener la extensión particular de Python, ya sabes, .py. Los módulos en
Python se crean de la misma manera. Es decir, son archivos de código
con extensión .py, y ubicados en un directorio donde Python sea capaz
de encontrarlos (es decir, el directorio de trabajo actual o listados en
sys.path).

64
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Los módulos contienen normalmente sentencias que están


relacionadas entre sí. Como he mencionado anteriormente, podemos
utilizar módulos en cualquier momento. El uso de un módulo consiste
en utilizar el código (es decir, variables, funciones) almacenado en
dicho módulo. El proceso de añadir y utilizar dicho código se llama
importación.

Creación de módulos

Crear un módulo en Python es muy simple. Digamos que queremos


crear un módulo que imprima el nombre de alguien. Escribe el
siguiente código utilizando tu editor favorito, y guardarlo como
myname.py. Este será el nombre de tu módulo, excluyendo la parte
.py, el cual se asignará a la variable global __name__.

Importar un módulos

Si tienes un archivo de Python y quieres añadir el código del módulo


que hemos creado anteriormente, lo importamos utilizando la palabra
clave import, tal que así:

La salida de este script será: Hola Jorge.

Asegúrate de que Python es capaz de encontrar el archivo importado.


Como consejo, ponlo en el mismo directorio que el archivo de Python
que está utilizando la importación.
65
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Como puedes ver, la importación de un módulo nos permite mejorar


nuestro programa añadiendo nuevas funcionalidades al mismo a partir
de archivos externos (es decir, módulos).

Sin embargo, ¿qué está sucediendo aquí, detrás de bambalinas?


Cuando importamos un módulo, Python compila ese módulo y genera
un archivo .pyc, y el programa sólo se vuelve a compilar si el .py es
más reciente que el archivo .pyc.

Tomemos otro ejemplo, pero esta vez con un módulo integrado en


Python. Vamos a elegir el módulo de matemáticas math. En este
ejemplo, para un número concreto queremos encontrar el redondeo a
la alta (el valor entero más pequeño mayor o igual que el número), el
redondeo a la baja (valor de número entero más grande menor que o
igual al número), y el valor absoluto de ese número. El script de Python
para este programa es el siguiente:

Si ejecutamos este script, la salida sería:

Por tanto, hemos sido capaces de aplicar diferentes operaciones en


nuestro número sin necesidad de escribir código para cada operación,
sino más bien mediante la reutilización de funciones ya disponibles
en el módulo math. Eso es de gran utilidad.

Tal vez te preguntes, ¿hay que utilizar siempre la notación


math.function()? ¿No podemos utilizar la función de inmediato con el

66
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

nombre del módulo (es decir, math)? Sí, se puede hacer usando la
siguiente sintaxis para la importación:

De esta manera, puedes llamar a las funciones anteriores (ceil(x),


floor(x), y fabs(x)) sin la necesidad de precederlos con el nombre del
módulo, math.

Módulos como script

Volvamos a nuestro módulo de antes, myname.py:

¿Podemos tratar este módulo como un proceso independiente que se


puede ejecutar directamente y pasarle argumentos mediante línea de
comandos? Por ejemplo, ¿qué pasará si escribes lo siguiente en línea
de comandos?

¡Nada! Inténtalo y no obtendrás ninguna salida.

Con el fin de ser capaz de ejecutar el módulo como un script, tenemos


que establecer que __name__ = '__main__'. Por lo tanto, el módulo
myname ahora se verá de la siguiente manera:

67
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Si ejecutas este comando en tu terminal: python myname.py 'Jorge',


obtendrás la siguiente salida:

Expresiones Lambda
Una función lambda es una función anónima1 en Python que se utiliza
para crear pequeñas funciones de una sola expresión. A diferencia de
las funciones convencionales definidas por la palabra reservada "def",
las funciones lambda se definen en una sola línea de código sin
necesidad de un nombre explícito. En su forma más básica, la sintaxis
de una función lambda se compone de la palabra reservada "lambda",
seguida por una lista de parámetros separados por comas, luego un
signo de dos puntos y finalmente la expresión que devuelve el
resultado de la función.

La principal utilidad de las funciones lambda en Python es que


permiten crear funciones pequeñas y sencillas de una manera más
rápida y concisa que con las funciones convencionales definidas con
"def". Las funciones lambda también pueden ser utilizadas para crear
funciones de orden superior, es decir, funciones que toman otras
funciones como argumentos y/o devuelven otras funciones como
resultado. Además, las funciones lambda son particularmente útiles
en la programación funcional, donde se utilizan como argumentos de
otras funciones de orden superior como map(), filter() y reduce().

1 En Python, una función anónima es una función que no está definida con un nombre explícito

utilizando la palabra reservada def. En su lugar, se utiliza la palabra reservada lambda para definir una
función anónima.
68
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Sintaxis básica

Todas las funciones Lambda en Python tienen exactamente la misma


sintaxis:

Como mejor se puede explicar es describiendo un ejemplo básico,


vamos a ver una función normal y un ejemplo de Lambda:

Al igual que ocurre en las list comprehensions, lo que hemos hecho es


escribir el código en una sola línea y limpiar la sintaxis innecesaria.

En lugar de usar def para definir nuestra función, hemos utilizado la


palabra clave lambda; a continuación escribimos x, y como
argumentos de la función, y x + y como expresión. Además, se omite
la palabra clave return, condensando aún más la sintaxis.

Por último, y aunque la definición es anónima, la almacenamos en la


variable suma_dos para poder llamarla desde cualquier parte del
código, de no ser así tan solo podríamos hacer uso de ella en la línea
donde la definamos.

69
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Aplicaciones de Lambdas

Las funciones lambda son útiles en muchas situaciones donde


necesitamos una función temporal o una función pequeña y simple
que no requiere un nombre. Aquí hay algunas aplicaciones concretas
de funciones lambdas en Python:

● Funciones de orden superior: Las funciones lambda se utilizan


comúnmente en funciones de orden superior, como filter(),
map() y reduce(). Estas funciones toman una función como
argumento y la aplican a una secuencia de elementos.
● Clasificación y ordenamiento: Las funciones lambda se pueden
utilizar para clasificar o ordenar elementos según un criterio
específico. Por ejemplo, si tenemos una lista de diccionarios y
queremos ordenarla por un valor específico en cada diccionario,
podemos usar una función lambda como clave de ordenamiento.
● Procesamiento de eventos: Las funciones lambda también son
útiles para procesar eventos en aplicaciones de GUI. Por
ejemplo, si queremos que un botón haga algo cuando se hace
clic, podemos utilizar una función lambda como manejador de
eventos para el botón.

70
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Anexo Referencias
• "Python for Everybody" de Charles Severance.
Disponible en https://www.py4e.com/book

• "Think Python" de Allen B. Downey.


Disponible en https://greenteapress.com/wp/think-python-2e/

• El tipo de dato STR


https://j2logo.com/python/tutorial/tipo-str-python/

• PEP-8 de Python
https://recursospython.com/pep8es.pdf

• Estructuras de control de flujo


https://jarroba.com/curso-de-python-4-estructuras-de-control-
de-flujo/

• Operadores de Python
https://www.codigofuente.org/operadores-en-python/

71
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
INSTRUCCIONES BÁSICAS DEL LENGUAJE PYTHON

Módulo
FUNDAMENTOS DE PROGRAMACIÓN EN
PYTHON

72
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Módulo
FUNDAMENTOS DE PROGRAMACIÓN EN
PYTHON

0
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Aprendizaje esperado 3

Construye un algoritmo utilizando estructuras de dato del lenguaje


Python para resolver un problema.

Estructura de Datos

En Python, una estructura de datos es una forma de organizar y


almacenar datos en la memoria del programa. Las estructuras de datos
permiten que los datos sean manipulados y accedidos de manera
eficiente y efectiva. En otras palabras, las estructuras de datos en
Python proporcionan una forma sistemática y organizada de manejar
y procesar grandes cantidades de datos.

Python ofrece varias estructuras de datos integradas, como listas,


tuplas, conjuntos y diccionarios, que se pueden utilizar para almacenar
diferentes tipos de datos. Cada una de estas estructuras de datos tiene
sus propias características y métodos para manipular los datos
almacenados en ella.

Además de las estructuras de datos integradas, Python también


admite estructuras de datos personalizadas y avanzadas, como
árboles, grafos y matrices dispersas, que se pueden implementar
utilizando bibliotecas de terceros como NumPy y Pandas. Estas
estructuras de datos personalizadas pueden ser muy útiles para
resolver problemas específicos en áreas como la ciencia de datos, la
inteligencia artificial, el aprendizaje automático y la optimización.

A la hora de escoger una estructura de datos adecuada en Python para


resolver un problema, debes tener en cuenta varios factores
importantes:

1
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

● Tipo de datos: ¿Qué tipo de datos necesitas almacenar? ¿Son


números, cadenas de texto, objetos complejos, etc.? El tipo de
datos que se necesitan almacenar en la estructura de datos es
un factor clave a considerar.
● Operaciones que se realizarán en los datos: ¿Qué tipo de
operaciones necesitas realizar en los datos almacenados en la
estructura? ¿Necesitas realizar búsquedas, ordenar los datos,
filtrarlos o agregar nuevos datos? El tipo de operaciones que se
realizarán en los datos te ayudará a determinar la estructura de
datos más adecuada.
● Eficiencia: ¿Cuántos datos necesitas almacenar? ¿Cuánto tiempo
tomará realizar operaciones en los datos? La eficiencia de la
estructura de datos es importante, especialmente si necesitas
procesar grandes cantidades de datos o realizar operaciones
complejas.
● Complejidad: ¿Qué tan complejo es el problema que se está
resolviendo? ¿Necesitas una estructura de datos simple o
compleja para resolver el problema?
● Flexibilidad: ¿Necesitas una estructura de datos flexible que se
pueda adaptar a diferentes escenarios y situaciones? ¿O
necesitas una estructura de datos específica que solo se ajuste
a un tipo de problema?

Teniendo en cuenta estos factores, puedes elegir la estructura de


datos adecuada en Python para resolver tu problema de manera
eficiente y efectiva. Algunas de las estructuras de datos más comunes
en Python incluyen listas, tuplas, diccionarios y conjuntos, pero
también hay otras estructuras más complejas que se pueden utilizar
para resolver problemas más específicos.

2
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Métodos en Python: Funciones predefinidas


para operar en tipos y estructuras de datos

En Python, tanto los tipos de datos como las estructuras de datos


tienen sus propios métodos, que son funciones predefinidas que se
pueden utilizar para realizar diferentes operaciones en los datos
almacenados.

Los métodos de los tipos de datos se utilizan para realizar operaciones


específicas en los datos de ese tipo. Por ejemplo, los métodos de
cadenas de texto pueden convertir una cadena a mayúsculas, eliminar
espacios en blanco y dividirla en subcadenas. Los métodos de
números enteros pueden calcular la cantidad de bits necesarios para
representar el número, mientras que los métodos de booleanos
pueden devolver el valor real del número (1 si es True, 0 si es False).

Por otro lado, los métodos de las estructuras de datos se utilizan para
realizar operaciones específicas en los datos almacenados en esas
estructuras. Cada estructura de datos tiene sus propios métodos
específicos. Por ejemplo, los métodos de una lista pueden agregar
elementos al final, eliminar elementos, ordenar la lista, buscar
elementos y mucho más. Los métodos de un diccionario pueden
agregar y eliminar pares clave-valor, buscar claves y valores, y mucho
más.

En resumen, los métodos en Python son funciones predefinidas que


se utilizan para realizar diferentes operaciones en los datos
almacenados. Los métodos de los tipos de datos se utilizan para
realizar operaciones específicas en los datos de ese tipo, mientras que
los métodos de las estructuras de datos se utilizan para realizar
operaciones específicas en los datos almacenados en esas estructuras.

3
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Métodos de String
string.replace(string_viejo, string_nuevo)

La función replace() retorna una nueva cadena con la sustitución de la


subcadena antigua por otra nueva.

Ejemplo:

string.partition(char)

El método partition() divide la cadena en la primera aparición


de char y devuelve una tupla que contiene la parte anterior a char, el
mismo char, y la parte posterior de char.

Ejemplo:

string.title()

El método title() devuelve una copia de la cadena donde las palabras


comienzan con una letra mayúscula.

Ejemplo:

4
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

string.swapcase()

El método swapcase() devuelve una copia de la cadena con los


caracteres en mayúsculas convertidos en minúsculas y viceversa.

Ejemplo:

strig.startswith (prefijo)

El método startswith() devuelve True si la cadena comienza con el


prefijo, de lo contrario devuelve False.

Ejemplo:

string.split(sep)

El método split() devuelve una lista de las palabras en la cadena,


utilizando a sep como la cadena delimitadora.

Ejemplo:

5
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

string.zfill(ancho)

El método zfill() devuelve una copia de la cadena que se rellena


con 0 dígitos ASCII para hacer una cadena de ancho de longitud .

Ejemplo:

Formateo de strings
Construir una única cadena de caracteres a partir de otras más
pequeñas es algo que estarás haciendo prácticamente siempre al
momento de escribir código, sea en Python o en cualquier otro
lenguaje. Por esta razón, tener un buen dominio de las herramientas
para llevarlo a cabo es fundamental para diseñar un mejor código: más
eficiente, más legible

Método format.

Los datos que queremos incluir dentro de la cadena se pasan como


argumentos a la función format. El número dentro de las llaves indica
la posición del argumento que será reemplazado en aquel lugar.
Como nombre es el primer argumento, empezando a contar desde el
cero, entonces será ubicado en donde se encuentra {0}.

Esto resulta bastante práctico ya que podemos alterar la cadena sin


necesidad de cambiar el orden de los argumentos.

6
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Incluso puedes colocar las llaves tantas veces como quieras sin
necesidad de repetir los argumentos, lo que hubiese sido una
limitación en el sistema anterior.

Si te resulta más cómodo, a partir de Python 2.7 puedes omitir los


números dentro las llaves.

Aunque lógicamente, omitiendo las posiciones no te permitirá


realizar repeticiones, pero no será necesario en la mayoría de los
casos.

Otra característica que añade este nuevo sistema es la posibilidad de


especificar con un nombre determinado los valores que queremos
incluir.

Si bien en el ejemplo puede resultar algo trivial, puede serte de


utilidad para cadenas más complejas. No hay problema en combinar
ambos métodos.

7
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Este sistema de formateo incluye las mismas herramientas que


describimos anteriormente. Simplemente añadimos dos puntos y
especificamos los diversos parámetros. Por ejemplo:

Existen algunas diferencias. Por ejemplo, al indicar la cantidad de


caracteres que queremos imprimir como mínimo, este sistema por
defecto utilizará una alineación izquierda, mientras que el anterior
derecha. Para cambiar este comportamiento utilizamos los caracteres
«<" (izquierda) y ">» (derecha).

Empleando el carácter «^» causará que los nombres se centren

8
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Para convertir a hexadecimal:

Al igual que en el método anterior, para imprimir literalmente llaves,


deben colocarse dos veces.

Este sistema de formateo estándar de Python está explicado


íntegramente en el documento PEP 3101 — Advanced String
Formatting (ver referencia).

El siguiente código crea una suerte de pirámide a partir de un número


determinado de caracteres.

Este otro código representa una tabla con información sobre


los lenguajes más populares del 2016 según TIOBE.

9
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

El resultado es el siguiente

f-strings

Con la idea de mejorar la legibilidad respecto de los sistemas


anteriores, en Python 3.6 surgen las denominadas «f-strings» o
«cadenas-f». Cuando una cadena esté precedida por una «f»,

10
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

utilizando llaves se podrán ubicar expresiones dentro de la misma que


serán luego ejecutadas.

Nótese que son expresiones, no simples identificadores, a diferencia


de los métodos anteriores.

En versiones anteriores, utilizando str.format se intentaba emular


este funcionamiento vía el siguiente código.

La función locals() devuelve un diccionario que contiene los nombres


de los objetos y sus respectivos valores. En cuanto al nuevo sistema,
se ha incorporado las características de str.format con la misma
sintaxis.

11
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Template
Esta es una forma menos potente pero que te puede resolver
problemas concretos de forma sencilla. En este caso, lo que se usa es
el símbolo del dólar, $, para poder usar variables dentro del texto.

Si quisiéramos usar el símbolo de dólar como parte del texto lo


tendríamos que hacer así:

Es decir, usando $$ escribirá el símbolo de dolar.

Y no podríamos hacer mucho más… Entonces, ¿para qué usar


usar string.Template si es tan limitado? Debido a esas limitaciones
puede ser una buena opción si en el texto que hemos de formatear
queremos evitar que se ejecute código. Con otras opciones hemos
visto que cierto código puede ser ejecutado. Si nosotros no somos los
responsables de meter lo que se puede evaluar en el formateado
podríamos tener algún problema de seguridad y, en esos
casos, string.Template podría ser una posible opción a usar.

12
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Objeto srt
Además de poder formatear texto y números de muchas formas, el
propio objeto str dispone de muchos métodos que pueden resultar
muy útiles para que el texto se muestre como deseamos.

Por ejemplo, imagina que llega una información que no puede tener
espacios de ningún tipo (espacios, saltos de línea,…). Podemos usar el
método replace para eliminar estos espacios:

Pero lo anterior tiene el problema de que tenemos que especificar


otros tipos de ‘espacios’. Por ejemplo, lo siguiente no me eliminaría
los saltos de línea

Con string.whitespace podemos ver lo que son espacios:

13
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

El problema anterior lo podría resolver de la siguiente forma:

Es decir, concatenando llamadas a replace con cada uno de los


posibles espacios (espacios en blanco, saltos de línea,
tabulaciones,…)… Pero lo anterior no es mantenible ni bonito. Una
posible solución podría ser usando los métodos strip y join. El primero
lo que hace es separar el texto usando el delimitador que le indique y
el segundo lo que hace es unirse partes de texto con el delimitador
que considere. Veamos primero uno y luego otro y luego uniremos sus
fortalezas para resolver el problema anterior:

Al método split, si no indico el separador a usar por defecto separa el


texto por sus espacios (espacio en blanco, tabulación, salto de
línea,…).

En método join lo que hace es unir partes:

14
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

También nos podría interesar que, antes de unir el texto, cada palabra
empezase por mayúscula para así, después de quitar los espacios,
poder leer el resultado de forma más sencilla. Para ello podríamos
usar el método title:

Si solo quisiéramos en mayúscula la primera palabra del texto


podríamos usar el método capitalize.

Quizá queremos un texto que al guardarlo quede de tal forma que


todos los signos de puntuación (‘,’, ‘.’, ‘!’, ‘¿’,…) sean sustituidos por un
guión bajo (‘_’). Además, queremos que las mayúsculas se conviertan
en minúsculas y que los espacios se conviertan en guiones (‘-‘). Por
ejemplo, queremos que el texto:

Se convierta finalmente en:

15
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Es decir, todo el texto en minúsculas, los espacios y saltos de línea


convertidos en guiones y los signos de puntuación convertidos en
guiones bajos.

Para convertir todo a minúsculas podemos usar el método lower (para


convertir todo a mayúscula podemos usar el método upper):

Para transformar los espacios ya hemos visto el ejemplo anterior.


Modificó el ejemplo anterior con el nuevo texto y el nuevo separador
y encadenó, además, el método lower:

Resultado:

Para cambiar los signos de puntuación voy a hacer uso de dos


métodos, maketrans y translate. El primero me crea un mapeo de las
cosas que quiero eliminar del texto a las cosas por las que las quiero
sustituir. Para indicar los signos de puntuación voy a hacer uso
de string.punctuation

16
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Primero hago el mapeo que luego usaré en translate:

Lo anterior dice que las ‘,’ las identifique como ‘_’, los ‘.’ como ‘_’, los
‘?’ como ‘_’,…, a la hora de hacer la transformación. La transformación
la hago con translate usando ese mapping:

Vemos que las comas y puntos las ha sustituido por guiones bajos.

17
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

¿Qué ha pasado? Que el guión está entre los caracteres de puntuación


y me los sustituye también. Podemos hacer varias cosas, o cambiar el
orden de alguna operación o ignorar el guión en el mapeo. La segunda
me parece más limpia y menos propensa a errores por lo que vamos
con ella:

Podríamos, también, comprobar si nuestro texto empieza o termina


por un texto usando los métodos startswith o endswith,
respectivamente:

Podemos comprobar si el texto es numérico:

18
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

19
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Fecha y hora
Python viene con una variedad de objetos útiles que se pueden usar
de inmediato. Los objetos de fecha son ejemplos de tales objetos. Los
tipos de fecha son difíciles de manipular desde cero, debido a la
complejidad de fechas y horas. Sin embargo, los objetos de fecha de
Python facilitan enormemente la conversión de fechas en los formatos
de cadena deseables.

El formateo de fechas es una de las tareas más importantes a las que


te enfrentarás como programador. Las diferentes regiones del mundo
tienen diferentes formas de representar fechas / horas, por lo tanto,
su objetivo como programador es presentar los valores de fecha de
una manera que los usuarios puedan leer.

Por ejemplo, es posible que deba representar un valor de fecha


numéricamente como “02-23-2018”. Por otro lado, es posible que
deba escribir el mismo valor de fecha en un formato de texto más
largo, como “23 de febrero de 2018”. En otro escenario, es posible que
desee extraer el mes en formato de cadena de un valor de fecha con
formato numérico.

Python datetime El módulo, como probablemente adivinó, contiene


métodos que pueden usarse para trabajar con valores de fecha y hora.
Para usar este módulo, primero lo importamos a través
del import declaración de la siguiente manera:

Podemos representar valores de tiempo usando el time clase. Los


atributos de la time la clase incluye la hora, minuto, segundo y
microsegundo. Los argumentos a favor del time las clases son
opcionales. Aunque si no especifica ningún argumento obtendrá un

20
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

tiempo de 0, que es poco probable que sea lo que necesita la mayor


parte del tiempo.

Por ejemplo, para inicializar un objeto de tiempo con un valor de 1


hora, 10 minutos, 20 segundos y 13 microsegundos, podemos ejecutar
el siguiente comando:

Para ver la hora, usemos el print función:

Salida:

Es posible que necesite ver la hora, el minuto, el segundo o el


microsegundo solamente, así es como puede hacerlo:

Salida:

Los minutos, segundos y microsegundos del tiempo anterior se


pueden recuperar de la siguiente manera:

21
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Salida:

Los valores para la fecha del calendario se pueden representar


mediante el date clase. Las instancias tendrán atributos para año, mes
y día.

Llamemos al today método para ver la fecha de hoy:

Salida: sería la fecha actual, con el siguiente formato.

22
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

El código devolverá la fecha de hoy, por lo tanto, el resultado que


vea dependerá del día en que ejecute el script anterior.

Ahora llamemos al ctime método para imprimir la fecha en otro


formato:

Salida

los ctime El método usa un formato de fecha y hora más largo que los
ejemplos que vimos antes. Este método se utiliza principalmente para
convertir el tiempo Unix (el número de segundos desde el 1 de enero
de 1970) a un formato de cadena.

Y así es cómo podemos mostrar el año, el mes y el día usando


el date clase:

Salida

23
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Conversiones
Fechas en cadenas con strtime

Ahora que sabe cómo crear objetos de fecha y hora, aprendamos a


formatearlos en cadenas más legibles.

Para lograr esto, usaremos el strftime método. Este método nos ayuda
a convertir objetos de fecha en cadenas legibles. Toma dos
parámetros, como se muestra en la siguiente sintaxis:

El primer parámetro es la cadena de formato, mientras que el segundo


parámetro es la hora de formatear, que es opcional.

Este método también se puede utilizar en datetime objeto


directamente, como se muestra en el siguiente ejemplo:

Salida

Hemos utilizado las siguientes cadenas de caracteres para formatear


la fecha:

24
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

● %b: Devuelve los primeros tres caracteres del nombre del mes.
En nuestro ejemplo, devolvió “Sep”

● %d: Devuelve el día del mes, del 1 al 31. En nuestro ejemplo,


devolvió “15”.

● %Y: Devuelve el año en formato de cuatro dígitos. En nuestro


ejemplo, devolvió “2018”.

● %H: Devuelve la hora. En nuestro ejemplo, devolvió “00”.

● %M: Devuelve el minuto, de 00 a 59. En nuestro ejemplo,


devolvió “00”.

● %S: Devuelve el segundo, de 00 a 59. En nuestro ejemplo,


devolvió “00”.

No pasamos un tiempo, por lo tanto, los valores de tiempo son todos


“00”. El siguiente ejemplo muestra cómo se puede formatear la hora
también:

Salida

Cadenas a fechas con strtime

los strftime El método nos ayudó a convertir objetos de fecha en


cadenas más legibles. los strptime El método hace lo contrario, es

25
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

decir, toma cadenas y las convierte en objetos de fecha que Python


puede entender.

Aquí está la sintaxis del método:

El parámetro string es el valor en formato de cadena que queremos


convertir en formato de fecha. los format parámetro es la directiva
que especifica el formato que debe tomar la fecha posterior a la
conversión.

Por ejemplo, digamos que necesitamos convertir la cadena “15/9/18”


en una datetime objeto.

Primero importamos el datetime módulo. Usaremos el from palabra


clave para poder hacer referencia a las funciones específicas del
módulo sin el formato de punto:

Luego podemos definir la fecha en forma de cadena:

Python no podrá entender la cadena anterior como una fecha y hora


hasta que la convierta en una datetime objeto. Podemos hacerlo con
éxito llamando al strptime método.

Ejecute el siguiente comando para convertir la cadena:

26
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Llamemos ahora al print función para mostrar la cadena


en datetime formato:

Salida

Como puede ver, la conversión se realizó correctamente.

Puede ver que la barra diagonal “/” se ha utilizado para separar los
distintos elementos de la cadena. Esto le dice al strptime método en
qué formato está nuestra fecha, que en nuestro caso “/” se usa como
separador.

Pero, ¿y si el día / mes / año estuviera separado por un “-“? Así es cómo
manejarías eso:

Salida

27
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Expresiones Regulares
Las expresiones regulares son expresiones comodín que definen
patrones de caracteres a emparejar y extraer de una cadena de texto.
Para entenderlo con un ejemplo, definamos «Python» como nuestra
expresión regular y «Programa en Python» como nuestra cadena de
texto. En este caso, nuestra cadena de texto contiene una instancia de
nuestra expresión regular. Si bien este ejemplo ilustrativo puede
resultar sencillo, en este post veremos como las expresiones regulares
se ayudan de caracteres especiales para poder emparejar cualquier
patrón de texto, pudiendo llegar a considerarse un lenguaje en sí
mismas. También cabe mencionar que las expresiones regulares no
son una característica exclusiva de Python, ya que también están
presentes en otros lenguajes de programación como Java, JavaScript,
Ruby, entre otros.

Componentes de las expresiones Regulares.


Literales:

Cualquier carácter se encuentra a sí mismo, a menos que se trate de


un metacaracter con significado especial. Una serie de caracteres
encuentra esa misma serie en el texto de entrada, por lo tanto la
plantilla "raul" encontrará todas las apariciones de "raul" en el texto
que procesamos.

28
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Secuencia de escape:

La sintaxis de las expresiones regulares nos permite utilizar


las secuencias de escape que ya conocemos de otros lenguajes de
programación para esos casos especiales como ser finales de línea,
tabs, barras diagonales, etc. Las principales secuencias de escape que
podemos encontrar, son:

Secuencia de escape Significado

\n Nueva línea (new line). El cursor pasa a la


primera posición de la línea siguiente.

\t Tabulador. El cursor pasa a la siguiente


posición de tabulación.

\\ Barra diagonal inversa.

\v Tabulación vertical.

\ooo Carácter ASCII en notación octal.

\xhh Carácter ASCII en notación hexadecimal.

\xhhhh Carácter Unicode en notación


hexadecimal.

Métodos para usar expresiones regulares


El uso de las expresiones regulares en Python viene dado por el
paquete re, que hay que importar a nuestro código. Algunos de los
métodos proporcionados en este paquete son:

● re.search(patrón, cadena): busca la primera ocurrencia de la


expresión regular definida en patrón dentro del string cadena. El
resultado se devuelve en un objeto Match en caso de que exista tal

29
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

ocurrencia, o en un objeto None en caso contrario. Siguiendo con


el ejemplo anterior:

● re.findall(patrón, cadena): devuelve una lista que contiene todas las


ocurrencias de la expresión regular definida en patrón dentro del
string cadena. Las ocurrencias se devuelven en el mismo orden en
que se han encontrado.

● re.split(separador, cadena): divide la cadena tomando en cuenta las


ocurrencias del separador. El resultado se devuelve en una lista.

Caracteres para definir expresiones


regulares.
Hasta ahora hemos visto ejemplos muy simples del uso de las
expresiones regulares. En este apartado vamos a ver los distintos
caracteres o comodines que podemos utilizar para formar patrones de
búsqueda más complejos.

30
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Inicio y fin de línea: ^, $

Los símbolos de acento circunflejo (^) y dólar ($) indican que nuestro
patrón de búsqueda debe contener respectivamente el inicio o fin de
una línea en una cadena de texto. En el siguiente ejemplo, la
expresión regular ‘^Python’ busca ocurrencias de la cadena Python al
inicio de la línea, y por eso el método findall devuelve sólo una
ocurrencia a pesar de que la frase contenga dos veces la cadena
‘Python’.

import re
frase = "Python no sólo es un lenguaje de programación, Python es
mi lenguaje de programación favorito"
patron = '^Python'
re.findall(patron, frase)
['Python']
frase = "Me gusta aprender Python y programar en P^ython"
patron = 'Python$'
re.findall(patron, frase)
['Python']

31
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Coincidencia de caracteres: ., \s, \S

Los símbolos ., \s y \S indican respectivamente cualquier carácter,


espacio en blanco y cualquier carácter a excepción del espacio en
blanco. En el siguiente ejemplo, ‘^.ython’ busca al principio de la línea
(^) cualquier carácter (.) seguido por la cadena ‘ython’. Es decir,
palabras como Aython, Bython, Cython, etc. a principio de línea se
interpretan como una coincidencia. Sin embargo, la expresión regular
‘\s.ython’ empareja en la frase de ejemplo con ‘ Nython’ y ‘ Python’, ya
que esta expresión regular busca un espacio en blanco al principio de
la ocurrencia.

import re
frase = "Cython no es ningún lenguaje de programación y Nython
tampoco pero Python si"
patron = '^.ython'
palabras = re.findall(patron, frase)
['Cython']
patron = '\\s.ython'
palabras = re.findall(patron, frase)
['Nython','Python']

Caracteres de repetición: *, +, ?

Estos tres caracteres tienen el siguiente significado:

● * : indica la repetición de un carácter cero o más veces.

● + : indica la repetición de un carácter una o más veces.

● ? : Es el carácter reluctant o cuantificador reacio. Añadido a


cualquiera de los anteriores se contará con la ocurrencia más
corta posible.

32
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

El siguiente ejemplo ilustra el uso del cuantificador reacio. El primer


patrón: ‘.+n’, busca cualquier repetición de caracteres que termine en
‘n’. Como la última palabra de la frase termina en ‘n’, el resultado de
la búsqueda retorna la frase entera. Sin embargo, al añadir el
cuantificador reacio al patrón: ‘.+?n’ el resultado de la búsqueda
resulta más restrictiva ya que ésta contiene todas las secuencias de
caracteres terminadas en ‘n’.

Rangos de caracteres: [a-z]

Dentro de los conjuntos de caracteres también podemos especificar


rangos añadiendo un guión a la secuencia. Algunos ejemplos de uso
son los siguientes:

● [a-z]+ : indica una secuencia de letras minúsculas.

● [A-Z]+ : se usa para encontrar secuencias de letras mayúsculas.

● [a-zA-Z]+ : es para secuencias de letras mayúsculas o


minúsculas.

● [A-Z][a-z]+ : secuencias de una letra mayúscula seguida de una


o más letras mayúsculas.

● [0-9]+ : para secuencias de números de uno o más dígitos.

33
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Inicio y fin de la extracción: ()

Los paréntesis ( ) no forman parte del patrón a comprobar, pero


indican respectivamente dónde empieza y termina la extracción del
texto. Un caso de uso es la extracción de dominios en direcciones de
correo electrónico. Esta operación la podemos realizar mediante el
patrón: ‘@([^ ]*)’ En este caso sabemos que el dominio viene después
de un símbolo de arroba (@) que indicamos en nuestra expresión
regular, seguido de una condición cerrada entre paréntesis ya que no
queremos que el resultado contenga arrobas.

Listas
Las listas en Python son un tipo contenedor, compuesto, que se usan
para almacenar conjuntos de elementos relacionados del mismo tipo
o de tipos distintos.

Puede ser:

● Heterogéneas: pueden estar conformadas por elementos de


distintos tipo, incluidos otras listas.

● Mutables: sus elementos pueden modificarse.

El tipo de dato lista tiene algunos métodos más. Aquí están todos los
métodos de los objetos lista:

List.append(x)

Agrega un ítem al final de la lista. Equivale a a[len(a):] = [x].

34
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

list.extend(iterable)

Extiende la lista agregándole todos los ítems del iterable. Equivale


a a[len(a):] = iterable.

list.insert(i, x)

Inserta un ítem en una posición dada. El primer argumento es el índice


del ítem delante del cual se insertará, por lo
tanto a.insert(0, x) inserta al principio de la lista
y a.insert(len(a), x) equivale a a.append(x).

list.remove(x)

Quita el primer ítem de la lista cuyo valor sea x. Lanza un ValueError si


no existe tal ítem.

list.pop([i])

Quita el ítem en la posición dada de la lista y lo retorna. Si no se


especifica un índice, a.pop() quita y retorna el último elemento de la
lista. (Los corchetes que encierran a i en la firma del método denotan
que el parámetro es opcional, no que deberías escribir corchetes en
esa posición. Verás esta notación con frecuencia en la Referencia de
la Biblioteca de Python.)

list.clear()

Elimina todos los elementos de la lista. Equivalente a del a[:].

35
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

list.index(x[, start[, end]])

Retorna el índice basado en cero del primer elemento cuyo valor sea
igual a x. Lanza una excepción ValueError si no existe tal elemento.

Los argumentos opcionales start y end son interpretados como la


notación de rebanadas y se usan para limitar la búsqueda a un
segmento particular de la lista. El índice retornado se calcula de
manera relativa al inicio de la secuencia completa en lugar de con
respecto al argumento start.

list.count(x)

Retorna el número de veces que x aparece en la lista.

list.sort(*, key=None, reverse=False)

Ordena los elementos de la lista in situ (los argumentos pueden ser


usados para personalizar el orden de la lista, ver sorted() para su
explicación).

list.reverse()

Invierte los elementos de la lista in situ.

list.copy()

Retorna una copia superficial de la lista. Equivalente a a[:].

Un ejemplo que usa la mayoría de los métodos de la lista:

36
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Los métodos como insert, remove o sort que únicamente modifican la


lista no tienen impreso un valor de retorno – retorna el valor por
defecto None. Esto es un principio de diseño para todas las estructuras
de datos mutables en Python.

Otra cosa que puedes observar es que no todos los datos se pueden
ordenar o comparar. Por ejemplo, [None, 'hello', 10] no se puede
ordenar ya que los enteros no se pueden comparar con strings
y None no se puede comparar con los otros tipos. También hay
algunos tipos que no tienen una relación de orden definida. Por
ejemplo, 3+4j < 5+7j no es una comparación válida.

Listas y String
A partir de una cadena de caracteres, podemos obtener una lista con
sus componentes usando la función split.

37
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Si queremos obtener las palabras (separadas entre sí por espacios) que


componen la cadena xs escribiremos simplemente xs.split():

En este caso split elimina todos los blancos de más, y devuelve sólo
las palabras que conforman la cadena.

Si en cambio el separador es otro carácter (por ejemplo la arroba, @),


se lo debemos pasar como parámetro a la función split. En ese caso se
considera una componente todo lo que se encuentra entre dos arrobas
consecutivas. En el caso particular de que el texto contenga dos
arrobas una a continuación de la otra, se devolverá una componente
vacía:

La casi–inversa de split es una función join que tiene la siguiente


sintaxis:

Devuelve la cadena que resulta de unir todas las componentes


separadas entre sí por medio del separador:

38
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Usando listas como pilas

Los métodos de lista hacen que resulte muy fácil usar una lista como
una pila, donde el último elemento añadido es el primer elemento
retirado («último en entrar, primero en salir»). Para agregar un
elemento a la cima de la pila, utiliza append(). Para retirar un
elemento de la cima de la pila, utiliza pop() sin un índice explícito. Por
ejemplo:

39
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Usando listas como colas

También es posible usar una lista como una cola, donde el primer
elemento añadido es el primer elemento retirado («primero en entrar,
primero en salir»); sin embargo, las listas no son eficientes para este
propósito. Agregar y sacar del final de la lista es rápido, pero insertar
o sacar del comienzo de una lista es lento (porque todos los otros
elementos tienen que ser desplazados por uno).

Para implementar una cola, utiliza collections.deque el cual fue


diseñado para añadir y quitar de ambas puntas de forma rápida. Por
ejemplo:

Comprensión de listas

Las comprensiones de listas ofrecen una manera concisa de crear


listas. Sus usos comunes son para hacer nuevas listas donde cada
elemento es el resultado de algunas operaciones aplicadas a cada
miembro de otra secuencia o iterable, o para crear un segmento de la
secuencia de esos elementos para satisfacer una condición
determinada.

Por ejemplo, asumamos que queremos crear una lista de cuadrados,


como:

40
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Nota que esto crea (o sobreescribe) una variable llamada x que sigue
existiendo luego de que el bucle haya terminado. Podemos calcular la
lista de cuadrados sin ningún efecto secundario haciendo:

o, un equivalente:

Una lista de comprensión consiste de corchetes rodeando una


expresión seguida de la declaración for y luego cero o más
declaraciones for o if. El resultado será una nueva lista que sale de
evaluar la expresión en el contexto de los for o if que le siguen. Por
ejemplo, esta lista de comprensión combina los elementos de dos
listas si no son iguales:

y es equivalente a:

41
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Nota como el orden de los for y if es el mismo en ambos pedacitos de


código.

Si la expresión es una tupla (como el (x, y) en el ejemplo anterior),


debe estar entre paréntesis.

42
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Las comprensiones de listas pueden contener expresiones complejas


y funciones anidadas:

43
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Búsqueda de elementos
El algoritmo de búsqueda lineal es un algoritmo simple, donde cada
elemento de la lista (empezando por el primer elemento) es
investigado hasta que es encontrado el elemento requerido, o se ha
alcanzado el final de la lista.

El algoritmo de búsqueda lineal es implementado en Python de la


siguiente manera

Vamos a probar el código. Introduce la sentencia al final del script de


Python de arriba:

Cuando introduzcas el input, asegúrate de que está entre comillas


simples o dobles (es decir 'pencil'). Si ingresa 'pencil', por ejemplo,
debes obtener el siguiente resultado:

44
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Ordenamiento
sort()

La forma más sencilla de ordenar una lista en Python es utilizar el


método sort() de la clase list.

Este método modifica la propia lista, ordenando los elementos de


manera ascendente (el método siempre devuelve None):

Para listas que contienen elementos de tipos heterogéneos, llamar a


la función sort() provocará que el intérprete lance un error.

sorted()

La función incorporada sorted() que se puede utilizar para ordenar


cualquier iterable, no solo listas. Esta función es muy parecida al
método sort() pero, a diferencia de este, sí que devuelve una nueva
lista.

Ejemplo:

45
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Si se llama a sorted() con una lista heterogénea de elementos, al igual


que con el método sort(), el intérprete lanzará un error. Por defecto,
tanto sort() como sorted() ordenan los elementos de manera
ascendente y para ello utilizan el operador <.

46
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Matrices
Cuando se manejan grandes cantidades de datos, puede ser más
efectivo utilizar soluciones que no impliquen la creación de
numerosas variables individuales. Por ejemplo, en lugar de utilizar
100 variables distintas para almacenar 100 números, resulta más
eficiente almacenar los datos juntos formando una estructura
conocida como "matriz" o "array" en inglés.

Aunque algunos autores traducen la palabra "array" como tabla,


vector o arreglo, en general, esta estructura permite acceder a cada
uno de sus elementos de forma individual utilizando corchetes. Así,
el primer elemento de una matriz de 10 elementos podría ser
accedido mediante "datos[0]", mientras que el último podría ser
accedido mediante "datos[9]".

A continuación, se presenta un ejemplo que ilustra cómo preparar un


array con 6 elementos, solicitar el ingreso de 6 datos y luego
mostrarlos en orden inverso al que fueron introducidos:

En Python, los arrays pueden ir aumentando de tamaño (comparado


con otros lenguajes de programación, en este sentido se parecen más
a lo que en muchos lenguajes de programación se conoce como
"listas"). Así, podemos partir de un array vacío e ir añadiendo
elementos con ".append":

47
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Nota: No podemos crear el array vacío con "datos = []" y luego dar
valor a un elemento con "datos[0]=5", porque obtendremos un
mensaje de error que nos avisa de que nos hemos salido del rango de
los datos. Deberemos reservar todas las o bien usar ".append".

También podemos saber la cantidad de datos con "len(datos)",


eliminar un elemento con ".remove", insertar en una cierta posición
con ".insert", o añadir toda una nueva lista de datos con "+", como en
este ejemplo:

48
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Cuyo resultado sería

Si un array va a contener muchos más datos, puede resultar incómodo


eso de dar los valores iniciales uno por uno, y quizá no podamos
emplear ".append" si los valores no los vamos a recibir exactamente
en orden. En ese caso, se puede inicializar el array usando una orden
"for" dentro de los corchetes, así:

Una forma más avanzada de crear un (falso) array vacío, para luego
irlo rellenando, es usar unas llaves vacías, como en "datos = { }",
aunque esto tiene un significado ligeramente distinto.

49
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Para crear una matriz de dos dimensiones (realmente, una "lista de


listas"), la alternativa más sencilla es indicar todos los valores
iniciales, incluso aunque fueran cero todos ellos (pero pueden no
serlo, o incluso ser de tipos de datos distintos):

Y si la matriz es de un tamaño grande, puede ser más cómodo crearla


y rellenarla de forma repetitiva, así:

Tuplas
Se ha visto que las listas y cadenas tienen propiedades en común,
como el indexado y las operaciones de seccionado. Estas son dos
ejemplos de datos de tipo secuencia. Como Python es un lenguaje en
evolución, otros datos de tipo secuencia pueden agregarse. Existe otro
dato de tipo secuencia estándar: la tupla.

Una tupla consiste en un número de valores separados por comas, por


ejemplo:

50
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Como puedes ver, en la salida las tuplas siempre se encierran entre


paréntesis, para que las tuplas anidadas puedan interpretarse
correctamente; pueden ingresarse con o sin paréntesis, aunque a
menudo los paréntesis son necesarios de todas formas (si la tupla es
parte de una expresión más grande). No es posible asignar a los ítems
individuales de una tupla, pero sin embargo sí se puede crear tuplas
que contengan objetos mutables, como las listas.

A pesar de que las tuplas puedan parecerse a las listas,


frecuentemente se utilizan en distintas situaciones y para distintos
propósitos. Las tuplas son immutable y normalmente contienen una
secuencia heterogénea de elementos que son accedidos al
desempaquetar o indizar. Las listas son mutable, y sus elementos son
normalmente homogéneos y se acceden iterando a la lista.

51
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Un problema particular es la construcción de tuplas que contengan 0


o 1 ítem: la sintaxis presenta algunas peculiaridades para estos casos.
Las tuplas vacías se construyen mediante un par de paréntesis vacío;
una tupla con un ítem se construye poniendo una coma a continuación
del valor (no alcanza con encerrar un único valor entre paréntesis).
Feo, pero efectivo.

Por ejemplo:

La declaración t = 12345, 54321, 'hola!' es un ejemplo


de empaquetado de tuplas: los valores 12345, 54321 y 'hola!' se
empaquetan juntos en una tupla. La operación inversa también es
posible:

Esto se llama, apropiadamente, desempaquetado de secuencias, y


funciona para cualquier secuencia en el lado derecho del igual. El
desempaquetado de secuencias requiere que la cantidad de variables
a la izquierda del signo igual sea el tamaño de la secuencia. Notá que
la asignación múltiple es en realidad sólo una combinación de
empaquetado de tuplas y desempaquetado de secuencias.

52
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Empaquetado y desempaquetado de tuplas


Si a una variable se le asigna una secuencia de valores separados por
comas, el valor de esa variable será la tupla formada por todos los
valores asignados. A esta operación se la denomina empaquetado de
tuplas.

Si se tiene una tupla de longitud k, se puede asignar la tupla


a k variables distintas y en cada variable quedará una de las
componentes de la tupla. A esta operación se la
denomina desempaquetado de tuplas.

Diccionario
Un diccionario es una estructura de datos y un tipo de dato en Python
con características especiales que nos permite almacenar cualquier
tipo de valor como enteros, cadenas, listas e incluso otras funciones.
Estos diccionarios nos permiten además identificar cada elemento por
una clave (Key).

53
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Para definir un diccionario, se encierra el listado de valores entre


llaves. Las parejas de clave y valor se separan con comas, y la clave y
el valor se separan con dos puntos.

Podemos acceder al elemento de un Diccionario mediante la clave de


este elemento, como veremos a continuación

También es posible insertar una lista dentro de un diccionario. Para


acceder a cada uno de los cursos usamos los índices:

Para recorrer todo el Diccionario, podemos hacer uso de la estructura


for:

54
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Métodos de los diccionarios

dict()

Recibe como parámetro una representación de un diccionario y si es


factible, devuelve un diccionario de datos.

zip()

Recibe como parámetro dos elementos iterables, ya sea una cadena,


una lista o una tupla. Ambos parámetros deben tener el mismo
número de elementos. Se devolverá un diccionario relacionando el
elemento i-esimo de cada uno de los iterables.

items()

Devuelve una lista de tuplas, cada tupla se compone de dos


elementos: el primero será la clave y el segundo, su valor.

55
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

keys()

Retorna una lista de elementos, los cuales serán las claves de


nuestro diccionario.

values()

Retorna una lista de elementos, que serán los valores de nuestro


diccionario.

clear()
Elimina todos los ítems del diccionario dejándolo vacío

56
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

copy()

Retorna una copia del diccionario original.

fromkeys()

Recibe como parámetros un iterable y un valor, devolviendo un


diccionario que contiene como claves los elementos del iterable con
el mismo valor ingresado. Si el valor no es ingresado, devolverá none
para todas las claves.

get()

Recibe como parámetro una clave, devuelve el valor de la clave. Si no


lo encuentra, devuelve un objeto none.

57
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

pop()

Recibe como parámetro una clave, elimina esta y devuelve su valor. Si


no lo encuentra, devuelve el error.

setdefault()

Funciona de dos formas. En la primera como get

Y en la segunda forma, nos sirve para agregar un nuevo elemento a


nuestro diccionario.

58
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

update()

Recibe como parámetro otro diccionario. Si se tienen claves iguales,


actualiza el valor de la clave repetida; si no hay claves iguales, este
par clave-valor es agregado al diccionario.

Iteración de diccionarios
Cuando iteramos sobre diccionarios, se pueden obtener al mismo
tiempo la clave y su valor correspondiente usando el método items().

Cuando se itera sobre una secuencia, se puede obtener el índice de


posición junto a su valor correspondiente usando la
función enumerate().

59
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Para iterar sobre dos o más secuencias al mismo tiempo, los valores
pueden emparejarse con la función zip().

Para iterar sobre una secuencia en orden inverso, se especifica


primero la secuencia al derecho y luego se llama a la
función reversed().

Para iterar sobre una secuencia ordenada, se utiliza la


función sorted() la cual retorna una nueva lista ordenada dejando a la
original intacta.

60
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Using set() on a sequence eliminates duplicate elements. The use


of sorted() in combination with set() over a sequence is an idiomatic
way to loop over unique elements of the sequence in sorted order.

A veces uno intenta cambiar una lista mientras la está iterando; sin
embargo, a menudo es más simple y seguro crear una nueva lista:

61
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Anexo Referencias
• "Python for Everybody" de Charles Severance.
Disponible en https://www.py4e.com/book

• "Think Python" de Allen B. Downey.


Disponible en https://greenteapress.com/wp/think-python-2e/

• Métodos String
https://www.freecodecamp.org/espanol/news/metodos-de-
string-de-python-explicados-con-ejemplo/

• PEP 3101 — Advanced String Formatting.


https://www.python.org/dev/peps/pep-3101

• PEP 8
https://www.recursospython.com/pep8es.pdf

• Fecha y Hora}
https://codigofacilito.com/articulos/fechas-python

• Listas y cadenas
https://uniwebsidad.com/libros/algoritmos-python/capitulo-
7/listas-y-cadenas
https://j2logo.com/python/tutorial/tipo-list-python/

• Matrices
https://www.cartagena99.com/recursos/alumnos/apuntes/intro
duccion%20matrices.pdf

• Métodos de búsqueda
https://uniwebsidad.com/libros/python/capitulo-7/metodos-
de-busqueda-2

62
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

• Expresiones Regulares
https://relopezbriega.github.io/blog/2015/07/19/expresiones-
regulares-con-python/

• Pilas y Colas
http://conocepython.blogspot.com/p/pilas-y-colas.html

63
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ESTRUCTURAS DE DATOS EN PYTHON

Módulo
FUNDAMENTOS DE PROGRAMACIÓN EN
PYTHON

64
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ORIENTACIÓN A OBJETO EN PYTHON

Módulo
FUNDAMENTOS DE PROGRAMACIÓN EN
PYTHON

0
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ORIENTACIÓN A OBJETO EN PYTHON

Aprendizaje esperado 4
Construir un programa en Python utilizando el paradigma de
Orientación a Objetos para resolver un problema

Orientación a Objeto en Python


¿Qué es la programación orientada a
objetos?
La programación orientada a objetos (POO) es un paradigma de
programación en el que se modela un sistema como un conjunto de
objetos interconectados que interactúan entre sí para realizar una
tarea determinada. Cada objeto es una entidad con un conjunto de
atributos y comportamientos definidos por su clase, que se utiliza
como plantilla para crear múltiples instancias de objetos.

En la programación orientada a objetos, los objetos interactúan


mediante el intercambio de mensajes, lo que les permite colaborar
para realizar una tarea compleja. Los objetos también pueden ser
organizados en una jerarquía de clases, donde cada clase puede
heredar atributos y comportamientos de una clase padre.

La programación orientada a objetos proporciona una serie de


ventajas, como la encapsulación, la abstracción, la modularidad y la
reutilización de código. La encapsulación permite que los objetos
oculten su complejidad interna y expongan sólo una interfaz pública
para interactuar con otros objetos. La abstracción permite que los
objetos se representen en términos de sus características esenciales,
lo que facilita su comprensión y manipulación.

La modularidad permite que los objetos se desarrollen y prueben de


manera independiente, lo que facilita el mantenimiento del código. Y

1
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ORIENTACIÓN A OBJETO EN PYTHON

la reutilización de código permite que los objetos se reutilicen en


múltiples contextos, lo que ahorra tiempo y reduce los errores de
programación.

Un ejemplo sencillo de programación orientada a objetos podría ser


una clase llamada "Coche". La clase "Coche" tendría atributos como la
marca, el modelo y el color del coche, así como comportamientos
como "acelerar", "frenar" y "cambiar de marcha".

Podríamos crear una instancia de la clase "Coche" llamada "miCoche"


con la marca "Toyota", el modelo "Corolla" y el color "Rojo". Luego,
podríamos utilizar los métodos de la clase "Coche" para acelerar y
frenar el coche, o cambiar la marcha según sea necesario.

Objetos

En Python, los objetos son instancias de una clase, que es una plantilla
que define un conjunto de atributos y métodos comunes a todos los
objetos creados a partir de esa clase.

Cada objeto en Python tiene un identificador único, un tipo y un valor.


El identificador único es un número que se asigna automáticamente
cuando se crea un objeto, y sirve para distinguirlo de otros objetos. El
tipo del objeto es la clase a partir de la cual se creó el objeto, y
determina los atributos y métodos que el objeto tendrá. El valor del
objeto es el contenido de sus atributos, que pueden ser de cualquier
tipo de datos en Python, como números, cadenas, listas, tuplas,
diccionarios, entre otros.

En Python, los objetos también tienen la capacidad de ser pasados


como argumentos a las funciones, devueltos como resultados de las
funciones, almacenados en variables y estructuras de datos, y

2
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ORIENTACIÓN A OBJETO EN PYTHON

modificados a través de la manipulación de sus atributos y métodos.


La flexibilidad de los objetos en Python es una de las razones por las
cuales es un lenguaje de programación tan popular y poderoso.

Acceso a los atributos y métodos de un


objeto: Función dir
● La función dir() en Python es una función integrada que se
utiliza para obtener una lista de todos los atributos y métodos
definidos en un objeto dado. La función dir() puede ser útil para
inspeccionar objetos y explorar su estructura.

Para ver si un objeto tiene un determinado atributo o método se utiliza


la siguiente función:

● hasattr(objeto, elemento): Devuelve True si elemento es un


atributo o un método del objeto objeto y False en caso
contrario.

Para acceder a los atributos y métodos de un objeto se pone el nombre


del objeto seguido del operador punto y el nombre del atributo o el
método.

● objeto.atributo: Accede al atributo atributo del objeto objeto.

● objeto.método(parámetros): Ejecuta el método método del


objeto objeto con los parámetros que se le pasen.

En Python, los tipos de datos primitivos como las cadenas de


caracteres son objetos que tienen atributos y métodos asociados. Un
ejemplo de método es upper(), que convierte la cadena en mayúsculas.
Para aplicar este método a una cadena c, simplemente se utiliza la
instrucción c.upper().

3
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ORIENTACIÓN A OBJETO EN PYTHON

Ejemplo. Las listas tienen un método append que convierte añade un


elemento al final de la lista. Para aplicar este método a la lista l se
utiliza la instrucción l.append(<elemento>).

Clases (class)
En Python, una clase es una plantilla o modelo que define un conjunto
de atributos y métodos que describen las características y el
comportamiento de un conjunto de objetos relacionados.

Los objetos se crean a partir de una clase y comparten las mismas


características y comportamientos definidos en la clase. Los atributos
de una clase son variables que describen las características del objeto,
mientras que los métodos son funciones que definen el
comportamiento del objeto.

Constructores de clases

Para declarar una clase se utiliza la palabra clave class seguida del
nombre de la clase y dos puntos, de acuerdo a la siguiente sintaxis:

class <nombre-clase>:
<atributos>
<métodos>

4
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ORIENTACIÓN A OBJETO EN PYTHON

Los atributos se definen igual que las variables mientras que los
métodos se definen igual que las funciones. Tanto unos como otros
tienen que estar indentados por 4 espacios en el cuerpo de la clase.

Ejemplo El siguiente código define la clase Saludo sin atributos ni


métodos. La palabra reservada pass indica que la clase está vacía.

Una buena convención en programación es iniciar el nombre de una


clase en Python con una letra mayúscula, ya que esto hace que el
código sea más fácil de leer y entender para otros programadores.
Además, es importante tener en cuenta que los nombres de las clases
deben ser descriptivos y representar adecuadamente el objeto o
concepto que se está modelando.

Clases primitivas

En Python existen clases predefinidas para los tipos de datos


primitivos:

● int: Clase de los números enteros.

● float: Clase de los números reales.

● str: Clase de las cadenas de caracteres.

● list: Clase de las listas.

● tuple: Clase de las tuplas.

● dict: Clase de los diccionarios.

5
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ORIENTACIÓN A OBJETO EN PYTHON

Instanciación de clases

Para crear un objeto de una determinada clase se utiliza el nombre


de la clase seguida de los parámetros necesarios para crear el objeto
entre paréntesis.

● clase(parámetros): Crea un objeto de la clase clase inicializado


con los parámetros dados.

6
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ORIENTACIÓN A OBJETO EN PYTHON

Cuando se crea un objeto de una clase se dice que el objeto es


una instancia de la clase.

Definición de métodos
Los métodos de una clase son las funciones que definen el
comportamiento de los objetos de esa clase.

Se definen como las funciones con la palabra reservada def. La única


diferencia es que su primer parámetro es especial y se denomina self.
Este parámetro hace siempre referencia al objeto desde donde se
llama el método, de manera que para acceder a los atributos o
métodos de una clase en su propia definición se puede utilizar la
sintaxis self.atributo o self.método.

La razón por la que existe el parámetro self es porque Python traduce


la llamada a un método de un objeto objeto.método(parámetros) en
la llamada clase.método(objeto, parámetros), es decir, se llama al
método definido en la clase del objeto, pasando como primer
argumento el propio objeto, que se asocia al parámetro self.

7
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ORIENTACIÓN A OBJETO EN PYTHON

Constructor: el método __init__

En Python, un constructor de clase es un método especial que se llama


automáticamente cuando se crea un objeto a partir de una clase. El
constructor se define con el nombre __init__() y se utiliza para
inicializar los atributos de un objeto.

El constructor __init__() se ejecuta automáticamente cuando se crea un


objeto a partir de la clase, y se le pasa como argumentos el objeto
(self) y cualquier otro argumento que se desee inicializar. Dentro del
cuerpo del constructor, se pueden asignar valores a los atributos del
objeto utilizando la sintaxis self.nombre_del_atributo = valor.

Atributos de instancia vs atributos de clase


Dentro del método __init__, se crean los atributos del objeto. Estos se
conocen como atributos de instancia y son específicos de cada objeto
creado a partir de la clase. Por otro lado, los atributos creados fuera
del método __init__ se conocen como atributos de clase, y son
compartidos por todos los objetos de la clase.

Los atributos de instancia pueden tener diferentes valores para cada


objeto de la clase, mientras que los atributos de clase tienen el mismo
valor para todos los objetos de la misma clase.

8
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ORIENTACIÓN A OBJETO EN PYTHON

En general, no deben usarse atributos de clase, excepto para


almacenar valores constantes.

El método __str__

Otro método especial es el método llamado __str__ que se invoca cada


vez que se llama a las funciones print o str. Devuelve siempre una
cadena que se suele utilizar para dar una descripción informal del
objeto. Si no se define en la clase, cada vez que se llama a estas
funciones con un objeto de la clase, se muestra por defecto la posición
de memoria del objeto.

9
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ORIENTACIÓN A OBJETO EN PYTHON

Herencia
Una de las características más potentes de la programación orientada
a objetos es la herencia, que permite definir una especialización de
una clase añadiendo nuevos atributos o métodos. La nueva clase se
conoce como clase hija y hereda los atributos y métodos de la clase
original que se conoce como clase madre.

Para crear un clase a partir de otra existente se utiliza la misma


sintaxis que para definir una clase, pero poniendo detrás del nombre
de la clase entre paréntesis los nombres de las clases madre de las
que hereda.

Ejemplo. A partir de la clase Tarjeta definida antes podemos crear


mediante herencia otra clase Tarjeta_Descuento para representar las
tarjetas de crédito que aplican un descuento sobre las compras.

La principal ventaja de la herencia es que evita la repetición de código


y por tanto los programas son más fáciles de mantener.

En el ejemplo de la tarjeta de crédito, el método mostrar_saldo solo


se define en la clase madre. De esta manera, cualquier cambio que se
haga en el cuerpo del método en la clase madre, automáticamente se

10
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ORIENTACIÓN A OBJETO EN PYTHON

propaga a las clases hijas. Sin la herencia, este método tendría que
replicarse en cada una de las clases hijas y cada vez que se hiciese un
cambio en él, habría que replicarlo también en las clases hijas.

Herencia simple y múltiple

La herencia es una de las características fundamentales de la


programación orientada a objetos (POO) y permite a las clases hijas
heredar atributos y métodos de la clase madre. Existen dos tipos de
herencia: simple y múltiple. En la herencia simple, una clase hija
hereda de una sola clase madre, mientras que en la herencia múltiple,
una clase hija hereda de dos o más clases madres.

En la herencia simple, la clase hija hereda todos los atributos y


métodos de la clase madre. De esta manera, los objetos de la clase
hija pueden utilizar tanto los atributos como los métodos de la clase
madre. La clase hija también puede definir nuevos atributos y métodos
que sean propios de ella. Estos atributos y métodos se agregan a los
que ya se han heredado de la clase madre.

Por otro lado, en la herencia múltiple, una clase hija hereda atributos
y métodos de dos o más clases madres. Esto significa que la clase hija
tiene acceso a todos los atributos y métodos de las clases madres. Al
igual que en la herencia simple, la clase hija puede definir nuevos
atributos y métodos que sean propios de ella.

Sin embargo, la herencia múltiple puede resultar complicada de


implementar y mantener en grandes sistemas. Esto se debe a que
puede haber conflictos entre los atributos y métodos heredados de las
diferentes clases madres. En caso de que dos o más clases madres
tengan un atributo o método con el mismo nombre, se produce una
ambigüedad y es necesario especificar de cuál clase madre se desea
utilizar dicho atributo o método.

11
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ORIENTACIÓN A OBJETO EN PYTHON

En resumen, la herencia simple y múltiple permiten a las clases hijas


heredar atributos y métodos de una o varias clases madres. Aunque la
herencia múltiple puede resultar más poderosa en términos de
reutilización de código, también puede resultar más complicada de
implementar y mantener en grandes sistemas. Por tanto, es
importante evaluar cuidadosamente las necesidades del sistema y
elegir el tipo de herencia que mejor se adapte a ellas.

Jerarquía de clases
A partir de una clase derivada mediante herencia se pueden crear
nuevas clases hijas aplicando de nuevo la herencia. Ello da lugar a una
jerarquía de clases que puede representarse como un árbol donde
cada clase hija se representa como una rama que sale de la clase
madre.

12
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ORIENTACIÓN A OBJETO EN PYTHON

Debido a la herencia, cualquier objeto creado a partir de una clase es


una instancia de la clase, pero también lo es de las clases que son
ancestros de esa clase en la jerarquía de clases.

El siguiente comando permite averiguar si un objeto es instancia de


una clase:

● isinstance(objeto, clase): Devuelve True si el objeto objeto es


una instancia de la clase y False en caso contrario.

Sobrecarga y polimorfismo

Los objetos de una clase hija heredan los atributos y métodos de la


clase madre, lo que les permite presentar un comportamiento similar
a los objetos de la clase madre. Sin embargo, la clase hija tiene la
capacidad de definir nuevos atributos o métodos, o reescribir los
métodos de la clase madre para que sus objetos presenten un
comportamiento distinto. A esto se le conoce como sobrecarga.

Por lo tanto, aunque un objeto de la clase hija y otro de la clase madre


puedan tener el mismo método, al invocar ese método en el objeto de
la clase hija, el comportamiento puede ser distinto al de un objeto de
la clase madre. Esto se debe al polimorfismo, que es otra de las

13
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ORIENTACIÓN A OBJETO EN PYTHON

características clave de la programación orientada a objetos. En


resumen, la sobrecarga y el polimorfismo permiten que las clases hijas
puedan extender y modificar el comportamiento de la clase madre.

class Tarjeta:
def __init__(self, id, cantidad=0):
self.id = id
self.saldo = cantidad
return

def mostrar_saldo(self):
print('El saldo es {:.2f}€.'.format(self.saldo))
return

def pagar(self, cantidad):


self.saldo -= cantidad
return

class Tarjeta_Oro(Tarjeta):
def __init__(self, id, descuento, cantidad=0):
self.id = id
self.descuento = descuento
self.saldo = cantidad
return

def pagar(self, cantidad):


self.saldo -= cantidad * (1 - self.descuento / 100)

t1 = Tarjeta('1111111111', 1000)
t2 = Tarjeta_Oro('2222222222', 1, 1000)
t1.pagar(100)
t1.mostrar_saldo()
t2.pagar(100)

14
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ORIENTACIÓN A OBJETO EN PYTHON

t2.mostrar_saldo()

Este es un ejemplo de programación orientada a objetos en Python,


que muestra el uso de clases, métodos y herencia.

La clase Tarjeta tiene un constructor que toma dos argumentos, un id


y una cantidad opcional que representa el saldo inicial de la tarjeta.
Tiene también dos métodos, mostrar_saldo y pagar. El método
mostrar_saldo simplemente imprime el saldo actual de la tarjeta,
mientras que el método pagar resta una cantidad dada del saldo.

La clase Tarjeta_Oro es una subclase de Tarjeta y también tiene un


constructor que toma tres argumentos, un id, un descuento (como un
porcentaje) y una cantidad opcional que representa el saldo inicial. La
subclase Tarjeta_Oro sobrescribe el método pagar, lo que significa que
cuando se llama a este método en un objeto de Tarjeta_Oro, la
cantidad se resta del saldo con un descuento aplicado.

Luego se crean dos objetos, t1 y t2, que son instancias de las clases
Tarjeta y Tarjeta_Oro, respectivamente. Se realiza una compra de 100
con cada tarjeta, y se muestra el saldo actualizado de cada una con el
método mostrar_saldo. La salida indica que t1 ha disminuido su saldo
en 100, mientras que t2 ha disminuido en 99 debido al descuento
aplicado.

15
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ORIENTACIÓN A OBJETO EN PYTHON

Principios de la programación orientada a


objetos
La programación orientada a objetos se basa en los siguientes
principios:

● Encapsulación: Agrupar datos (atributos) y procedimientos


(métodos) en unidades lógicas (objetos) y evitar manipular los
atributos accediendo directamente a ellos, usando, en su lugar,
métodos para acceder a ellos.

● Abstracción: Ocultar al usuario de la clase los detalles de


implementación de los métodos. Es decir, el usuario necesita
saber qué hace un método y con qué parámetros tiene que
invocarlo (interfaz), pero no necesita saber cómo lo hace.

● Herencia: Evitar la duplicación de código en clases con


comportamientos similares, definiendo los métodos comunes
en una clase madre y los métodos particulares en clases hijas.

● Polimorfismo: Redefinir los métodos de la clase madre en las


clases hijas cuando se requiera un comportamiento distinto. Así,
un mismo método puede realizar operaciones distintas
dependiendo del objeto sobre el que se aplique.

Resolver un problema siguiendo el paradigma de la programación


orientada a objetos requiere un cambio de mentalidad con respecto a
cómo se resuelve utilizando el paradigma de la programación
procedimental.

La programación orientada a objetos es más un proceso de modelado,


donde se identifican las entidades que intervienen en el problema y
su comportamiento, y se definen clases que modelizan esas entidades.
Por ejemplo, las entidades que intervienen en el pago con una tarjeta

16
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ORIENTACIÓN A OBJETO EN PYTHON

de crédito serían la tarjeta, el terminal de venta, la cuenta corriente


vinculada a la tarjeta, el banco, etc. Cada una de ellas daría lugar a
una clase.

Después se crean objetos con los datos concretos del problema y se


hace que los objetos interactúen entre sí, a través de sus métodos,
para resolver el problema. Cada objeto es responsable de una subtarea
y colaboran entre ellos para resolver la tarea principal. Por ejemplo,
la terminal de venta accede a los datos de la tarjeta y da la orden al
banco para que haga un cargo en la cuenta vinculada a la tarjeta.

De esta forma se pueden abordar problemas muy complejos


descomponiéndose en pequeñas tareas que son más fáciles de
resolver que el problema principal.

17
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ORIENTACIÓN A OBJETO EN PYTHON

Anexo Referencias
• "Python for Everybody" de Charles Severance.
Disponible en https://www.py4e.com/book

• "Think Python" de Allen B. Downey.


Disponible en https://greenteapress.com/wp/think-python-2e/

• Curso Python: Clases y objetos


https://youtu.be/aj4PEXq0zuc

• Curso Python: Métodos especiales


https://youtu.be/goFjfPklfcg

• Curso Python: Herencia


https://youtu.be/E76ErVQ1xNI

18
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
ORIENTACIÓN A OBJETO EN PYTHON

Módulo
FUNDAMENTOS DE PROGRAMACIÓN EN
PYTHON

19
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EXCEPCIONES EN PYTHON

Módulo
FUNDAMENTOS DE PROGRAMACIÓN EN
PYTHON

Aprendizaje Esperado 1

0
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EXCEPCIONES EN PYTHON

Aprendizaje Esperado 5

Codificar un algoritmo manejando las excepciones para tomar


acciones sobre los errores de acuerdo al lenguaje Python.

Excepciones
En Python, las excepciones son una forma de manejar errores y
situaciones inesperadas que pueden surgir durante la ejecución de un
programa. Cuando se produce una excepción, el programa se
interrumpe y se muestra un mensaje de error indicando el tipo de
excepción y la ubicación en el código donde se produjo.

Las excepciones en Python son objetos que se crean cuando se


produce un error. Cada tipo de excepción tiene un nombre y una
descripción que indica el tipo de error que se produjo. Algunos
ejemplos de excepciones comunes en Python incluyen ValueError,
TypeError, ZeroDivisionError, NameError y FileNotFoundError.

Para manejar las excepciones en Python, se utilizan bloques try-


except. Dentro de un bloque try, se coloca el código que puede
generar una excepción. Si se produce una excepción, se interrumpe la
ejecución del bloque try y se pasa al bloque except correspondiente.
Dentro del bloque except, se maneja la excepción y se toman las
acciones necesarias para solucionar el problema o continuar con la
ejecución del programa.

Además de los bloques try-except, también existen bloques try-


except-finally, que permiten ejecutar un bloque de código después de
que se maneje una excepción, independientemente de si se produjo o
no. También se pueden utilizar bloques try-except-else para ejecutar
un código específico si no se produce ninguna excepción dentro del
bloque try.

1
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EXCEPCIONES EN PYTHON

Manejo de excepciones try, except y finally


La sentencia try-except-finally es una estructura básica de control de
flujo en lenguajes de programación, que permite manejar errores y
excepciones que puedan ocurrir en la ejecución de un bloque de
código. Esta estructura consta de tres partes fundamentales: el bloque
try, el bloque except y el bloque finally.

El bloque try es el primer bloque que se ejecuta en esta estructura. En


él se coloca el código que se desea ejecutar, pero que puede generar
una excepción o error. Si se produce una excepción o error, el control
de flujo pasa al siguiente bloque, except. La sintaxis del bloque try es
la siguiente:

try:
# código que puede producir una excepción o error
except Exception:
# código que se ejecuta si se produce una excepción o error
finally:
# código que se ejecuta siempre, independientemente de si se
produjo una excepción o no

El bloque except es el siguiente bloque que se ejecuta en la estructura


try-except-finally. Este bloque maneja las excepciones o errores que
se producen en el bloque try. Se pueden colocar varios bloques except,
uno para cada tipo de excepción que se quiera manejar. La sintaxis
del bloque except es la siguiente:

# código que puede producir una excepción o error


except TypeError:
# código que se ejecuta si se produce una excepción de tipo
TypeError

2
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EXCEPCIONES EN PYTHON

except ValueError:
# código que se ejecuta si se produce una excepción de tipo
ValueError
finally:
# código que se ejecuta siempre, independientemente de si se
produjo una excepción o no
El bloque finally es el último bloque que se ejecuta en la estructura
try-except-finally. Este bloque se ejecuta siempre,
independientemente de si se produjo una excepción o no en el bloque
try. La sintaxis del bloque finally es la siguiente:

try:
# código que puede producir una excepción o error
except Exception:
# código que se ejecuta si se produce una excepción o error
finally:
# código que se ejecuta siempre, independientemente de si se
produjo una excepción o no

Veamos ahora algunos ejemplos sencillos de cómo se usa la estructura


try-except-finally en Python:

try:
x=1/0
except ZeroDivisionError:
print("No se puede dividir entre cero")
finally:
print("Este mensaje se imprime siempre")

3
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EXCEPCIONES EN PYTHON

El código de ejemplo que se presenta en esta ocasión muestra cómo


se puede manejar una excepción de tipo ZeroDivisionError en Python.
En este caso, la excepción es generada cuando se intenta dividir un
número por cero, lo cual resulta imposible en términos matemáticos.

Para manejar esta excepción, se utiliza un bloque except que captura


la excepción y muestra un mensaje de error. De esta forma, el
programa no se detiene inesperadamente y el usuario puede recibir
un mensaje claro y preciso sobre lo que ha ocurrido.

Además, se utiliza un bloque finally que se ejecuta siempre,


independientemente de si se generó o no la excepción. En este caso,
el bloque finally simplemente imprime un mensaje de confirmación,
lo cual puede resultar útil para verificar que el código se ha ejecutado
correctamente.

En resumen, el ejemplo presentado muestra cómo se puede manejar


una excepción en Python utilizando los bloques try, except y finally.
Estos bloques permiten controlar el flujo del programa en situaciones
excepcionales y asegurarse de que el código se ejecuta
correctamente, incluso cuando se producen errores inesperados.

Procesamiento y propagación de
excepciones
Después de aprender cómo atrapar excepciones en Python, es
importante saber qué hacer cuando se captura una excepción. En
primer lugar, se pueden ejecutar lógicas específicas para el caso, como
cerrar un archivo o procesar la excepción de una manera alternativa.
Pero, además, existen opciones más genéricas, como dejar constancia
de la excepción, propagarla o hacer ambas cosas.

4
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EXCEPCIONES EN PYTHON

Para dejar constancia de la ocurrencia de la excepción, se puede


escribir en un archivo de log1 o mostrar un mensaje en pantalla. Es
común que esta información incluya el tipo de excepción, el momento
en que se produjo y las llamadas previas a la excepción. El objetivo es
facilitar el diagnóstico y la corrección del programa para evitar futuras
excepciones.

También es posible que se quiera propagar la excepción hacia la


función que invocó a la función actual después de realizar algún
procesamiento particular. En Python, esto se logra utilizando la
instrucción raise. Si se invoca dentro de un bloque except sin pasarle
parámetros, Python levantará la excepción atrapada por ese bloque.

Por otro lado, se puede decidir lanzar una excepción distinta y más
significativa para quien invocó a la función actual. Para ello, se utiliza
también la sentencia raise, indicando el tipo de excepción que se
desea lanzar y pasando los parámetros adicionales necesarios.

A continuación, se muestra un fragmento de código que utiliza la


sentencia raise para lanzar una excepción de tipo personalizado y
brindar información adicional sobre el contexto de la excepción.

def dividir(dividendo, divisor):


try:
resultado = dividendo / divisor
return resultado
except ZeroDivisionError:
raise ZeroDivisionError("El divisor no puede ser cero")

1 Un archivo de log es un archivo que contiene registros de información que se generan


automáticamente por el sistema o una aplicación. En este caso, se estaría guardando información sobre
las excepciones que se capturan durante la ejecución del programa, con el objetivo de facilitar el
diagnóstico de problemas y errores en el futuro. Estos archivos de log suelen incluir detalles como la
hora y fecha en que ocurrió el evento, el tipo de evento, y cualquier otra información relevante que
pueda ser útil para el análisis y la resolución de problemas.

5
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EXCEPCIONES EN PYTHON

Acceso a información de contexto en bloque


except
Cuando se trabaja con excepciones en Python, es importante poder
acceder a la información de contexto para poder entender mejor qué
ha sucedido y cómo solucionar el problema. Para hacer esto estando
dentro de un bloque except, existen dos alternativas.

La primera alternativa es utilizar la función exc_info del módulo sys.


Esta función devuelve una tupla que contiene información sobre la
última excepción atrapada en un bloque except. La tupla tiene tres
elementos: el tipo de excepción, el valor de la excepción y las
llamadas realizadas. Esta información puede ser muy útil para
diagnosticar y solucionar el problema, ya que nos permite entender
qué tipo de excepción se ha producido y en qué contexto se ha
generado.

La segunda alternativa para acceder a la información de contexto es


utilizar la misma sentencia except, pero pasándole un identificador
para que almacene una referencia a la excepción atrapada. Esto
permite acceder a los mismos tres elementos que devuelve la función
exc_info, aunque de una manera un poco distinta. Al almacenar una
referencia a la excepción atrapada en una variable, se puede acceder
a los atributos de la excepción y obtener información adicional que
pueda ser útil para el diagnóstico y resolución de problemas.

En cualquier caso, es importante tener en cuenta que acceder a la


información de contexto puede ser de gran ayuda para entender las
excepciones que se producen en un programa. Esta información puede
ayudarnos a identificar y solucionar problemas de manera más
efectiva, y a asegurarnos de que nuestro programa está funcionando
de la manera que esperamos. Por lo tanto, es recomendable utilizar

6
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EXCEPCIONES EN PYTHON

estas alternativas para acceder a la información de contexto cuando


se trabaja con excepciones en Python.

try:
# código que puede lanzar una excepción
except Exception, ex:
# procesamiento de la excepción cuya información
# es accesible a través del identificador ex

Nota

En lenguajes como Java, el compilador verifica que todas las


excepciones que pueda lanzar una función estén correctamente
declaradas. Esto obliga a los programadores a ser explícitos sobre las
excepciones que pueden surgir y hace más fácil la detección temprana
de posibles errores.

En Python, en cambio, no hay una obligación explícita de declarar las


excepciones que una función puede lanzar. Esto puede resultar en una
mayor flexibilidad, pero también puede llevar a que los errores no
sean detectados en tiempo de compilación.

Por esta razón, es importante que los programadores de Python


presten atención a las excepciones probables que puedan surgir en
sus funciones y las atrapen adecuadamente en un bloque try-except.
Al atrapar las excepciones, se pueden manejar los errores de manera
adecuada y proporcionar información útil al usuario o al equipo de
desarrollo sobre qué salió mal y por qué.

Además, es importante tener en cuenta que no atrapar las excepciones


puede resultar en la terminación inesperada del programa, lo que
puede llevar a una mala experiencia del usuario y a la pérdida de

7
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EXCEPCIONES EN PYTHON

datos. En resumen, aunque Python no obliga explícitamente a declarar


las excepciones, es importante tener en cuenta las posibles
excepciones y manejarlas adecuadamente para garantizar la robustez
y la fiabilidad del programa.

8
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EXCEPCIONES EN PYTHON

Anexo Referencias
• Errores y excepciones
https://docs.python.org/es/3/tutorial/errors.html

9
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
EXCEPCIONES EN PYTHON

Módulo
FUNDAMENTOS DE PROGRAMACIÓN EN
PYTHON

10
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

Módulo
FUNDAMENTOS DE PROGRAMACIÓN EN
PYTHON

1
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

Aprendizaje esperado 6
Gestionar el código fuente utilizando GitHub para mantener un
repositorio de código remoto seguro y permitir trabajo concurrente.

Fundamentos de Git
Git es un sistema de control de versiones distribuido que se utiliza
principalmente en la gestión de proyectos de software. Fue creado en
el año 2005 por Linus Torvalds, el creador del kernel de Linux, y se ha
convertido en uno de los sistemas de control de versiones más
populares y utilizados en la actualidad.

La función principal de Git es mantener un registro de los cambios


realizados en el código fuente de un proyecto1, lo que permite a

los desarrolladores trabajar en diferentes versiones del código al


mismo tiempo, mantener un historial completo de los cambios
realizados y revertir los cambios no deseados. Git funciona mediante
la creación de ramas (branches) que permiten a los desarrolladores
trabajar en diferentes versiones del código al mismo tiempo sin
interferir en el trabajo de otros miembros del equipo.

Además, Git es un sistema de control de versiones distribuido, lo que


significa que cada miembro del equipo tiene su propia copia completa
del repositorio y puede trabajar en ella de forma independiente sin
necesidad de una conexión constante a un servidor central. Esto hace
que Git sea muy útil para proyectos distribuidos o para equipos que
trabajan de forma remota.

1 El código fuente es un conjunto de instrucciones escritas en un lenguaje de programación que un

programador utiliza para crear un programa o una aplicación de software. Es el nivel más bajo de un
programa y contiene las instrucciones que la computadora puede entender y ejecutar.

2
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

En resumen, Git es una herramienta de control de versiones esencial


para el desarrollo de software que permite a los equipos trabajar de
forma colaborativa, mantener un registro completo de los cambios
realizados y revertir cambios no deseados de forma fácil y rápida.

Necesidad de un repositorio de código


fuente
Un repositorio de código fuente es una herramienta esencial para
cualquier proyecto de desarrollo de software. Estas son algunas de las
razones por las que es importante tener un repositorio de código
fuente:

• Control de versiones: El repositorio de código fuente permite el


control de versiones del software en desarrollo. Esto significa
que se puede rastrear cada cambio realizado en el código a lo
largo del tiempo, lo que facilita la gestión de errores y la
colaboración en el desarrollo.Colaboración: El repositorio de
código fuente permite a múltiples desarrolladores trabajar en el
mismo proyecto sin interferir en el trabajo de los demás. Los
desarrolladores pueden trabajar en diferentes ramas del código
y luego fusionar sus cambios en una única versión final.

3
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

● Historial: El repositorio de código fuente mantiene un historial


completo de todos los cambios realizados en el código a lo largo
del tiempo. Esto permite que los desarrolladores rastreen el
progreso del proyecto y tomen decisiones informadas sobre
futuras actualizaciones.

● Respaldos: Un repositorio de código fuente también funciona


como una herramienta de respaldo para el código fuente del
proyecto. Esto significa que incluso si el equipo pierde acceso a
su servidor local o su computadora, aún podrán recuperar el
código fuente desde el repositorio.

● Gestión de conflictos: Cuando varios desarrolladores están


trabajando en el mismo proyecto, es posible que surjan
conflictos en el código. El repositorio de código fuente ayuda a
manejar estos conflictos mediante la resolución de conflictos en
el momento de la fusión.

En resumen, un repositorio de código fuente es esencial para cualquier


proyecto de desarrollo de software. Ayuda a los desarrolladores a
colaborar, rastrear cambios, mantener un historial completo y
gestionar conflictos en el código.

4
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

Diferencias entre GIT y otros Sistema de


Control de Versiones

Una de las principales diferencias entre Git y otros sistemas de control


de versiones populares es la forma en que manejan sus datos. En Git,
los datos se manejan como un conjunto de copias instantáneas de un
sistema de archivos miniatura, mientras que en otros sistemas (como
CVS, Subversion, Perforce y Bazaar) se manejan como una lista de
cambios en los archivos.

Otra diferencia importante es que Git es un sistema distribuido de


control de versiones, lo que significa que cada usuario tiene una copia
completa del repositorio en su propia máquina. En contraste, sistemas
como Subversion tienen un repositorio centralizado que actúa como
punto de referencia para todos los usuarios.

Además, Git es conocido por ser muy rápido y eficiente en el manejo


de grandes proyectos y conjuntos de datos, gracias a la forma en que
almacena los datos en su base de datos. También ofrece una amplia
gama de herramientas y comandos para manejar ramas (branching) y
fusiones (merging), lo que lo hace muy flexible y poderoso.

En resumen, Git se diferencia de otros sistemas de control de


versiones por su enfoque distribuido, su eficiencia en el manejo de
grandes proyectos y su amplia gama de herramientas para el manejo
de ramas y fusiones.

5
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

Committed, Modified y Staged


Los estados de Git se refieren a los diferentes estados en los que se
pueden encontrar los archivos de un proyecto en un sistema de
control de versiones Git. En Git, existen tres estados principales en
los que se pueden encontrar los archivos: confirmado (committed),
modificado (modified) y preparado (staged).

● Confirmado (committed): significa que los datos están


almacenados de manera segura en tu base de datos local. Esto
indica que el archivo ha sido guardado de manera permanente
en el repositorio y no ha sufrido cambios desde su última
confirmación.
● Modificado (modified): significa que has modificado el archivo
pero todavía no lo has confirmado a tu base de datos. Es decir,
el archivo ha sido modificado, pero no ha sido guardado de
manera permanente en el repositorio.
● Preparado (staged): significa que has marcado un archivo
modificado en su versión actual para que vaya en tu próxima
confirmación. El archivo ha sido modificado y ha sido
preparado para ser confirmado en la siguiente operación de
confirmación (commit).

Estos estados son importantes para entender el flujo de trabajo de


Git y cómo se manejan los cambios en un repositorio.

Git directory, Working directory y Staging


area
Git tiene tres secciones principales en un proyecto: el directorio de Git
(Git directory), el directorio de trabajo (working directory) y el área de
preparación (staging area).

6
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

● El directorio de Git es donde se almacenan los metadatos y la


base de datos de objetos para el proyecto. Es la parte más
importante de Git y se copia al clonar un repositorio desde otra
computadora.
● El directorio de trabajo es una copia de una versión del proyecto.
Estos archivos se sacan de la base de datos comprimida en el
directorio de Git y se colocan en el disco para que se puedan
usar o modificar.
● El área de preparación es un archivo, generalmente contenido
en el directorio de Git, que almacena información sobre lo que
va a ir en la próxima confirmación. A veces se le denomina
índice (“index”), pero se está convirtiendo en estándar el
referirse a ella como el área de preparación.

Flujo de trabajo en GIT


1. Clonar el repositorio: Si aún no tienes una copia del repositorio
en tu máquina local, clónalo utilizando el comando git clone
<url>.
2. Crear una rama: Crea una rama nueva utilizando el comando git
branch <nombre_de_rama>.
3. Cambiar de rama: Cambia a la rama recién creada utilizando el
comando git checkout <nombre_de_rama>.
4. Realizar cambios: Realiza los cambios necesarios en los
archivos.
5. Agregar cambios: Agrega los cambios realizados utilizando el
comando git add <archivo>.
6. Confirmar cambios: Confirma los cambios agregados utilizando
el comando git commit -m "<mensaje_del_commit>".
7. Actualizar rama principal: Antes de fusionar los cambios en la
rama principal, es importante asegurarse de que tu rama esté

7
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

actualizada con la última versión de la rama principal. Para


hacerlo, cambia a la rama principal utilizando el comando git
checkout <rama_principal> y ejecuta el comando git pull para
obtener los cambios más recientes.
8. Fusionar cambios: Cambia de vuelta a tu rama utilizando el
comando git checkout <nombre_de_rama> y fusiona los cambios
de la rama principal en tu rama utilizando el comando git merge
<rama_principal>.
9. Resolver conflictos: Si hay conflictos entre los cambios en la
rama principal y los cambios en tu rama, Git te notificará y
deberás resolverlos manualmente.
10. Empujar cambios: Empuja los cambios confirmados a la
rama remota utilizando el comando git push.

8
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

Instalación de Git

Para instalar Git en tu computadora, sigue los siguientes pasos


dependiendo de tu sistema operativo:

En Windows

Descarga el instalador de Git para Windows desde el sitio web


oficial: https://git-scm.com/download/win

Ejecuta el instalador y sigue las instrucciones del asistente de


instalación.

Acepta los valores por defecto para las opciones de configuración,


a menos que sepas lo que estás haciendo y desees personalizarlas.

Haz clic en "Instalar" para iniciar la instalación.

Espera a que la instalación se complete y haz clic en "Finalizar"


para salir del asistente de instalación.

En Mac

9
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

Descarga el instalador de Git para Mac desde el sitio web oficial:


https://git-scm.com/download/mac

Ejecuta el instalador y sigue las instrucciones del asistente de


instalación.

Acepta los valores por defecto para las opciones de configuración,


a menos que sepas lo que estás haciendo y desees personalizarlas.

Haz clic en "Instalar" para iniciar la instalación.

Espera a que la instalación se complete y haz clic en "Finalizar"


para salir del asistente de instalación.

Configuración de Git

Configurar identidad

Después de instalar Git, es importante configurarlo para que pueda


funcionar correctamente en su entorno de desarrollo. A continuación,
se describen los pasos para configurar Git:

Configurar su nombre de usuario y correo electrónico:

El nombre de usuario y la dirección de correo electrónico son


utilizados por Git para etiquetar los commits (confirmaciones). Puede
configurarlos con los siguientes comandos de Git, reemplazando los
valores entre comillas con sus propios datos:

git config --global user.name "Su Nombre"


git config --global user.email "su-correo-
[email protected]"

10
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

Configurar editor

Cuando ejecute comandos como git commit, se abrirá un editor de


texto para que pueda ingresar su mensaje de confirmación. Si no ha
configurado un editor de texto, Git usará uno por defecto (vi en Linux
y Notepad en Windows). Para configurar su editor de texto preferido,
ejecute el siguiente comando de Git, reemplazando nano con el
nombre de su editor de texto preferido:

git config --global core.editor nano

Configurar credenciales

Para conectarse a repositorios remotos, como GitHub, GitLab o


Bitbucket, necesitará configurar sus credenciales. Puede hacerlo
mediante el almacenamiento en caché de sus credenciales en su
máquina local, utilizando el siguiente comando:

git config --global credential.helper cache

Comprobar configuración

Para verificar la configuración actual de Git, puede utilizar el


siguiente comando:

git config --list

Comandos de Git

11
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

Los comandos en Git son instrucciones que se utilizan en la línea de


comandos o en la interfaz de usuario de Git para realizar diversas
tareas, tales como crear un nuevo repositorio, clonar un repositorio
existente, realizar cambios en el código, confirmar los cambios y
enviarlos a un repositorio remoto, entre otras acciones. Los comandos
en Git se utilizan para interactuar con el sistema de control de
versiones y manejar los diferentes estados del código en el
repositorio. Git cuenta con una gran cantidad de comandos que se
pueden utilizar para gestionar el ciclo de vida del código de un
proyecto.

Creación de un repositorio

Un repositorio en Git es un espacio de almacenamiento donde se


guardan los archivos y las versiones de un proyecto. Es como una
carpeta que contiene todos los archivos de un proyecto y su historial
de cambios. En un repositorio de Git, se pueden guardar diferentes
versiones de un archivo y se pueden rastrear los cambios realizados
en cada versión.

Para crear un repositorio de Git, sigue los siguientes pasos:

1. Abre una terminal o línea de comandos en tu computadora.


2. Navega hasta la carpeta donde deseas crear el repositorio
utilizando el comando cd (por ejemplo, cd mi_proyecto).
3. Ejecuta el comando git init. Esto inicializará un nuevo
repositorio de Git en la carpeta actual.
4. Agrega los archivos que deseas rastrear en el repositorio
utilizando el comando git add <nombre_del_archivo> o git add
. para agregar todos los archivos de la carpeta actual.
5. Confirma los cambios con el comando git commit -m "Mensaje
de confirmación". Este comando toma una instantánea del

12
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

estado actual del repositorio y almacena un registro de los


cambios realizados.

Comando Git Init:

$ cd /ruta/a/la/carpeta/deseada
$ git init
Initialized empty Git repository in /ruta/a/la/carpeta/deseada/.git/

Clonar un repositorio o acceder a un


repositorio remoto

Clonar un repositorio de Git significa crear una copia exacta del


repositorio en tu propio sistema local. Al clonar un repositorio, se
descargan todos los archivos y la historia de cambios del repositorio
remoto y se crea una copia local en tu máquina. De esta manera,
puedes trabajar en los archivos localmente, hacer cambios y enviarlos
al repositorio remoto posteriormente. Clonar un repositorio es una
forma común de comenzar a trabajar en un proyecto colaborativo en
Git.

Para clonar un repositorio Git, sigue estos pasos:

- Abre una terminal en tu sistema operativo.


- Navega hasta el directorio en el que deseas clonar el repositorio.
- Ejecuta el siguiente comando:

13
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

git clone <URL del repositorio>

Presiona Enter y espera a que se complete la clonación. Git descargará


todos los archivos del repositorio a tu sistema local.

Una vez que hayas clonado el repositorio, podrás trabajar en él


localmente y enviar los cambios al repositorio remoto si lo deseas.

Ramificación en Git

En Git, la ramificación o "branching" es la capacidad de crear una copia


separada del código fuente de un proyecto en una nueva línea de
desarrollo. Esto permite trabajar en nuevas características o arreglos
de errores sin afectar el código original. En otras palabras, se puede
crear una rama para trabajar en una característica específica del
proyecto, mientras se mantiene la rama principal o "master" intacta.

Cada rama es independiente de las demás, lo que significa que los


cambios realizados en una rama no afectan a las demás ramas. Cuando
se completa el trabajo en una rama, se puede fusionar con la rama
principal para incorporar los cambios en el proyecto general. La
ramificación es una característica poderosa de Git que permite a los
equipos trabajar en paralelo y de forma colaborativa en un proyecto,
sin interrupciones ni conflictos.

14
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

Para crear una nueva rama en Git, puedes usar el comando git branch
seguido del nombre de la nueva rama. Por ejemplo, si deseas crear
una nueva rama llamada "nueva-rama", debes ejecutar el siguiente
comando en la terminal:

git branch nueva-rama

Para cambiar a la nueva rama, debes usar el comando git checkout


seguido del nombre de la rama. Por ejemplo:

git checkout nueva-rama

Ahora estás en la nueva rama y cualquier cambio que hagas se


registrará en esa rama.

15
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

Para eliminar una rama en Git, debes usar el comando git branch
seguido del parámetro -d y el nombre de la rama que deseas eliminar.
Por ejemplo, si deseas eliminar la rama "nueva-rama", debes ejecutar
el siguiente comando en la terminal:

git branch -d nueva-rama

Ten en cuenta que Git no te permitirá eliminar una rama si hay


cambios que aún no se han fusionado en otra rama o si la rama que
intentas eliminar es la rama actual. En estos casos, debes primero
fusionar los cambios o cambiar a otra rama antes de eliminar la rama.

Cómo fusionar ramas

Para fusionar ramas en Git, puedes seguir los siguientes pasos:

1. Asegúrate de estar en la rama que deseas fusionar. Si no estás


seguro, puedes verificarlo con el comando git branch.
2. Ejecuta el comando git merge seguido del nombre de la rama
que deseas fusionar. Por ejemplo, si deseas fusionar la rama
"feature" en la rama "master", puedes ejecutar git merge feature.
3. Si Git puede fusionar las ramas sin conflictos, te mostrará un
mensaje indicando que se realizó la fusión de manera exitosa.
En caso contrario, Git te informará de los conflictos que se
presentaron y te pedirá que los resuelvas manualmente.
4. Después de resolver los conflictos, debes agregar los cambios al
índice con el comando git add y luego confirmar la fusión con
el comando git commit.
5. Si deseas eliminar la rama que fusionaste, puedes hacerlo con
el comando git branch -d seguido del nombre de la rama. Por

16
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

ejemplo, si deseas eliminar la rama "feature", puedes ejecutar


git branch -d feature.

Es importante tener en cuenta que al fusionar dos ramas, los cambios


de ambas ramas se combinan. Si hay conflictos entre los cambios de
ambas ramas, deberás resolverlos manualmente para poder completar
la fusión.

Resolución de conflictos en Git

Cuando se fusionan dos ramas en Git, a veces puede haber conflictos


en los cambios realizados en los mismos archivos en ambas ramas.
Para resolver estos conflictos, se pueden seguir los siguientes pasos:

1. Identificar los conflictos: Después de intentar fusionar dos


ramas, Git mostrará un mensaje de error indicando que hay
conflictos en el archivo. Para identificar los conflictos, puede
usar el comando git status, que mostrará una lista de los
archivos con conflictos.
2. Abrir el archivo en conflicto: Abra el archivo con un editor de
texto para ver los conflictos. Git colocará las diferencias en el
archivo entre dos líneas con marcas <<<<<<<, =======, y
>>>>>>>. Las líneas anteriores a <<<<<<< son los cambios en la
rama actual, y las líneas después de ======= son los cambios
en la rama que se está intentando fusionar.
3. Resolver los conflictos: Para resolver los conflictos, edite el
archivo para que contenga el contenido deseado y elimine las
marcas de conflicto <<<<<<<, =======, y >>>>>>>. Después de
editar el archivo, guárdelo.

17
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

4. Agregar los cambios: Una vez que haya resuelto los conflictos
en el archivo, use el comando git add para agregar los cambios
al área de ensayo.
5. Completar la fusión: Una vez que haya resuelto todos los
conflictos en los archivos, use el comando git commit para
completar la fusión.

Es importante asegurarse de que los cambios en el archivo resuelvan


los conflictos de manera coherente y mantengan la funcionalidad
adecuada. Además, siempre es recomendable hacer una copia de
seguridad antes de fusionar ramas o realizar cualquier otra operación
importante en Git.

Existen varias estrategias para resolver conflictos en Git.

● Resolver manualmente: En esta estrategia, Git mostrará los


archivos que tienen conflictos y las líneas que están en
conflicto. Luego, se debe editar el archivo manualmente para
resolver el conflicto y finalmente hacer un commit.
● Fusionar usando una herramienta de fusión: Git también ofrece
algunas herramientas de fusión para ayudar a resolver
conflictos, como por ejemplo git mergetool. Esta herramienta
permite abrir cada archivo en conflicto en una herramienta de
edición de texto visual y realizar la fusión de forma más fácil.
● Fusionar usando una estrategia de fusión: Git tiene algunas
estrategias de fusión predefinidas que se pueden utilizar para
fusionar ramas con conflictos. Algunas de las estrategias más
comunes son la estrategia ours, que mantiene los cambios de
la rama actual y descarta los cambios de la rama fusionada, y
la estrategia theirs, que hace lo contrario.

18
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

Es importante recordar que la elección de una estrategia de


resolución de conflictos depende del caso en particular y del tipo de
conflicto que se esté tratando de resolver.

Git Pull y Git Push

git pull y git push son dos comandos muy importantes en Git que se
utilizan para sincronizar los cambios entre un repositorio local y un
repositorio remoto.

git pull se utiliza para actualizar el repositorio local con los cambios
más recientes del repositorio remoto. Este comando combina dos
comandos en uno: git fetch y git merge. Primero, git fetch descarga
los cambios del repositorio remoto, pero no los aplica en el repositorio
local. Luego, git merge fusiona los cambios descargados en el
repositorio local.

git push, por otro lado, se utiliza para enviar los cambios locales al
repositorio remoto. Si has realizado cambios en tu repositorio local,
debes utilizar git push para enviar esos cambios al repositorio remoto.

Ambos comandos son importantes para trabajar en equipo en


proyectos de Git y asegurarse de que todos los colaboradores tengan
la última versión del código.

Git Status

El comando "git status" se utiliza para verificar el estado actual del


repositorio local de Git. Al ejecutar el comando "git status", Git
muestra la información sobre los archivos que han sido modificados,
agregados o eliminados desde la última vez que se confirmaron los

19
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

cambios. También muestra cualquier archivo que no esté siendo


seguido por Git, pero que se encuentra en el directorio de trabajo.

Git Fetch
"git fetch" es un comando de Git que permite descargar los últimos
cambios de un repositorio remoto, pero sin integrarlos con el
repositorio local. En otras palabras, el comando "git fetch" actualiza el
estado del repositorio local para que coincida con el estado del
repositorio remoto.

Al ejecutar "git fetch", Git descarga la información más reciente del


repositorio remoto y actualiza los registros de seguimiento en el
repositorio local. Esto significa que, después de ejecutar "git fetch", el
usuario puede ver las ramas actualizadas en el repositorio remoto y
cualquier nuevo cambio que se haya realizado en el historial de
commits. Sin embargo, estos cambios aún no se fusionan con el
repositorio local. Para integrar los cambios descargados con el
repositorio local, es necesario usar el comando "git merge" o "git
rebase".

Ignorar archivos
En Git, es posible ignorar archivos o directorios específicos para que
no se incluyan en el repositorio o en las confirmaciones (commits) de
Git.

Para hacer esto, se puede crear un archivo llamado ".gitignore" en la


raíz del repositorio. Este archivo debe incluir una lista de archivos,
directorios y patrones que se deben ignorar. Por ejemplo, si desea
ignorar un archivo llamado "archivo.txt", simplemente agregue una
línea en el archivo ".gitignore" con el nombre del archivo:

20
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

archivo .gitignore

archivo.txt
*.log
datos/

También es posible usar patrones para ignorar archivos o directorios.


Por ejemplo, si desea ignorar todos los archivos con la extensión
".log", anteponga el *.

También es posible ignorar directorios completos y sus contenidos.


Por ejemplo, si desea ignorar un directorio llamado "datos".

Es importante tener en cuenta que el archivo ".gitignore" debe


agregarse y confirmarse (commit) en el repositorio para que los
archivos y directorios que se han especificado se ignoren
correctamente. Además, cualquier archivo o directorio que ya haya
sido agregado y confirmado en el repositorio no se ignorará
automáticamente. En este caso, se debe usar el comando "git rm" para
eliminar el archivo o directorio del repositorio.

Administración eficiente de cambios en un repositorio con los


comandos Stash y Rebase de Git

Stash y Rebase son dos comandos útiles de Git que se utilizan para
administrar los cambios en un repositorio.

El comando Stash se utiliza cuando un desarrollador necesita guardar


temporalmente los cambios en una rama, sin necesidad de hacer un
commit completo. Esto es útil cuando un desarrollador necesita
cambiar de rama para realizar otra tarea y quiere guardar sus cambios
actuales para trabajar en ellos más tarde. El comando Stash crea un

21
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

estado intermedio en el que se guardan los cambios y se eliminan


temporalmente de la rama actual, lo que permite al desarrollador
cambiar de rama y trabajar en ella sin problemas. Luego, cuando el
desarrollador regresa a la rama anterior, puede aplicar el estado
intermedio con los cambios guardados y continuar trabajando.

Por otro lado, el comando Rebase se utiliza para combinar los cambios
de una rama secundaria en la rama principal del repositorio de forma
más limpia y organizada. En lugar de crear una fusión de las ramas,
que puede generar una gran cantidad de conflictos y problemas de
compatibilidad, el comando Rebase toma los cambios de la rama
secundaria y los "reproduce" en la rama principal, uno por uno y en
orden cronológico. Esto puede dar como resultado un historial de
cambios más limpio y organizado, y reducir la cantidad de conflictos
que deben resolverse manualmente.

En resumen, Stash y Rebase son comandos útiles de Git que se utilizan


para administrar los cambios en un repositorio. El comando Stash se
utiliza para guardar temporalmente los cambios en una rama,
mientras que el comando Rebase se utiliza para combinar los cambios
de una rama secundaria en la rama principal del repositorio de forma
más limpia y organizada.

Ejemplo aplicado de uso de Git

Supongamos que queremos trabajar en un proyecto de programación


y utilizar Git para llevar un control de versiones. A continuación, se
detallará un ejemplo de uso de Git desde la creación de un repositorio
hasta la publicación, utilizando varios de los comandos más utilizados.

1. Creación del repositorio: Primero, creamos un repositorio en


nuestro servidor Git (por ejemplo, en GitHub). Luego, en nuestra
computadora local, creamos una carpeta donde almacenaremos
el código del proyecto.

22
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

2. Inicialización del repositorio: Abrimos la terminal en nuestra


computadora y navegamos a la carpeta donde queremos
almacenar el proyecto. Luego, inicializamos el repositorio de Git
en esa carpeta mediante el comando:

git init

3. Agregar archivos al repositorio: Agregamos los archivos que


deseamos incluir en el repositorio con el comando:

git add <nombre_del_archivo>

4. Confirmar cambios: Confirmamos los cambios agregando un


mensaje descriptivo con el comando:

git commit -m "mensaje descriptivo"

5. Crear una rama: Podemos crear una rama (una versión


alternativa del proyecto) con el comando:

git branch <nombre_de_la_rama>

6. Cambiar de rama: Podemos cambiar de rama con el comando:

git checkout <nombre_de_la_rama>

7. Fusionar ramas: Supongamos que hemos hecho cambios en la


rama "desarrollo" y queremos fusionarlos con la rama principal
"master". Primero, nos aseguramos de estar en la rama "master":

23
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

git checkout master

Luego, fusionamos los cambios de la rama "desarrollo" en la rama


"master" con el comando:

git merge desarrollo

8. Publicar cambios: Para publicar los cambios en el repositorio


remoto, podemos utilizar el comando:

git push <nombre_del_repositorio_remoto> <nombre_de_la_rama>

También podemos actualizar nuestro repositorio local con los cambios


en el repositorio remoto utilizando los siguientes comandos.

git fetch <nombre_del_repositorio_remoto>


git pull <nombre_del_repositorio_remoto> <nombre_de_la_rama>

Estos comandos nos permiten descargar los cambios del repositorio


remoto y fusionarlos con nuestra rama local.

En resumen, Git es una herramienta poderosa y útil para el control de


versiones. En este ejemplo, hemos visto cómo crear un repositorio,
agregar archivos, confirmar cambios, crear y cambiar de rama, fusionar
ramas y publicar los cambios en el repositorio remoto. Al aprender y
utilizar los comandos de Git, podemos trabajar de manera más efectiva

24
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

en proyectos de programación y mantener un control de versiones


adecuado.

Git Hub

GitHub es una plataforma de alojamiento de repositorios de código


fuente y una herramienta de
colaboración para equipos de
desarrollo de software. Los
desarrolladores pueden utilizar
GitHub para almacenar,
compartir y colaborar en
proyectos de código abierto o
privados. GitHub también ofrece herramientas de seguimiento de
problemas, control de versiones, integración continua y entrega
continua (CI/CD) y otras características útiles para la gestión de
proyectos de software.

Un pull request en GitHub es una solicitud que se realiza a los


colaboradores de un repositorio para que revisen y fusionen una rama
específica del repositorio. Los pull requests son una herramienta
fundamental para la colaboración en GitHub y se utilizan en proyectos
de desarrollo de software colaborativo, en los que varias personas
trabajan en el mismo código fuente y es necesario coordinar los
cambios y las revisiones.

Los pull requests permiten que los colaboradores revisen y aprueben


los cambios realizados en una rama antes de ser fusionados con la
rama principal del repositorio, lo que ayuda a mantener la calidad del
código y a prevenir errores. En GitHub, los pull requests se crean en la
plataforma web y se utilizan para iniciar conversaciones sobre los

25
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

cambios realizados, recibir comentarios y solicitar revisiones antes de


que se fusionen las ramas.

Pull Request

Un pull request (PR) es una solicitud que se hace a los colaboradores


de un repositorio de código fuente para que revisen y fusionen una
rama específica del repositorio. En general, los pull requests se
utilizan en proyectos de desarrollo de software colaborativo, en los
que varias personas trabajan en el mismo código fuente y es necesario
coordinar los cambios y las revisiones.

Un pull request se utiliza cuando un colaborador desea agregar


nuevas funcionalidades o solucionar errores en el código fuente del
repositorio. Para hacerlo, crea una rama (branch) a partir de la rama
principal del repositorio y realiza los cambios necesarios en su propia
rama. Luego, el colaborador abre un pull request para que otros
colaboradores revisen los cambios y los aprueben antes de fusionar la
rama con la rama principal del repositorio.

Para crear un pull request, se siguen los siguientes pasos:

1. Crear una rama: Se crea una rama a partir de la rama principal


del repositorio.
2. Realizar los cambios: Se realizan los cambios necesarios en la
rama creada.
3. Hacer un commit: Se hace un commit con los cambios
realizados.
4. Abrir un pull request: Se abre un pull request en el repositorio,
seleccionando la rama creada y describiendo los cambios
realizados.

26
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

5. Esperar la revisión: Los otros colaboradores del repositorio


revisan el pull request, realizan comentarios y solicitan cambios
adicionales si es necesario.
6. Fusionar la rama: Si el pull request es aprobado, se fusiona la
rama creada con la rama principal del repositorio.
7. En resumen, un pull request es una herramienta muy útil para
la revisión y aprobación de cambios en un repositorio de código
fuente, y su uso es muy común en proyectos de desarrollo de
software colaborativo.

27
MÓDULO: FUNDAMENTOS DE PROGRAMACIÓN EN PYTHON
FUNDAMENTOS DE GIT

Referencias
• Sitio Oficial
https://github.com/

• Comandos
https://www.freecodecamp.org/news/10-important-git-
commands-that-every-developer-should-know/

• Git en el Servidor
https://git-scm.com/book/es/v2/Git-en-el-Servidor-Los-
Protocolos

• Git en entornos distribuidos


https://git-scm.com/book/es/v2/Git-en-entornos-distribuidos-
Flujos-de-trabajo-distribuidos

28

También podría gustarte