Capítulo 2: Python y bibliotecas esenciales
2.1 Curso Intensivo de Python
¡Bienvenido al Capítulo 2! Aquí, profundizaremos en el mundo de Python y sus bibliotecas esenciales que se utilizan ampliamente en el campo del Aprendizaje Automático. Como probablemente ya sepas, Python se ha convertido en el lenguaje preferido de muchos científicos de datos e ingenieros de aprendizaje automático debido a su simplicidad y a las amplias bibliotecas disponibles. La popularidad de Python se debe en gran parte a que es un lenguaje de programación de código abierto que es fácil de aprender y usar.
A lo largo de este capítulo, cubriremos una variedad de temas, desde los conceptos básicos de la programación en Python hasta las bibliotecas esenciales utilizadas en el Aprendizaje Automático. Comenzaremos discutiendo la sintaxis de Python y los tipos de datos, incluyendo variables, bucles, condiciones y funciones. A continuación, exploraremos algunas de las bibliotecas más esenciales utilizadas en el Aprendizaje Automático, como NumPy, Pandas y Matplotlib, y cómo se pueden usar para procesar, analizar y visualizar datos.
También discutiremos los conceptos básicos del Aprendizaje Automático, incluyendo el aprendizaje supervisado y no supervisado, y cómo implementarlos utilizando Python. Al final de este capítulo, tendrás una comprensión sólida de Python y sus principales bibliotecas, estableciendo una base sólida para el resto del libro.
Comencemos con un curso intensivo sobre Python.
Python es un lenguaje de programación de alto nivel, poderoso y versátil que se utiliza ampliamente en diversos campos, como el desarrollo web, el análisis de datos, la inteligencia artificial y más. Su simplicidad y legibilidad lo convierten en un gran lenguaje para principiantes, pero también puede manejar tareas complejas y proyectos a gran escala.
En esta sección, exploraremos los conceptos básicos de Python, discutiendo en detalle los tipos de datos, el flujo de control, las funciones y las clases. También exploraremos algunas de las aplicaciones prácticas de Python en diversas industrias, como finanzas, atención médica y educación. Al final de esta sección, tendrás una comprensión sólida de los fundamentos de Python y podrás construir programas simples por tu cuenta.
Es importante tener en cuenta que esta sección no pretende ser una guía completa de Python, sino más bien una visión general rápida para ayudarte a comenzar. Si ya estás familiarizado con Python, siéntete libre de leer rápidamente esta sección o pasar a la siguiente, donde exploraremos temas más avanzados en programación en Python.
2.1.1 Tipos de Datos
Python tiene varios tipos de datos incorporados, que incluyen enteros, números flotantes, cadenas, listas, tuplas, conjuntos y diccionarios. Aquí tienes un resumen rápido:
Enteros y Números Flotantes
Los enteros son un tipo de número que representan cantidades enteras, mientras que los números flotantes, o números de punto flotante, son un tipo de número que representan cantidades decimales. Ambos tipos de números se pueden utilizar en operaciones aritméticas básicas, como suma, resta, multiplicación y división.
Los enteros se pueden utilizar en operaciones de módulo, que encuentran el resto de una operación de división. Los números flotantes también se pueden utilizar en operaciones matemáticas más complejas, como funciones trigonométricas y logaritmos. Es importante tener en cuenta que al realizar operaciones aritméticas con enteros y números flotantes, el resultado será un número flotante.
Ejemplo:
# Integers
x = 10
y = 2
print(x + y) # Addition
print(x - y) # Subtraction
print(x * y) # Multiplication
print(x / y) # Division
# Floats
a = 1.5
b = 0.5
print(a + b)
print(a - b)
print(a * b)
print(a / b)
Propósito del Código:
Este fragmento de código demuestra cómo realizar operaciones aritméticas básicas con números enteros y de punto flotante en Python. Muestra el comportamiento de los operadores de adición, sustracción, multiplicación y división para ambos tipos de datos.
Desglose Paso a Paso:
- Aritmética con Enteros:
- El código asigna el valor entero
10
a la variablex
y2
a la variabley
. - Luego realiza las siguientes operaciones utilizando los operadores aritméticos:
print(x + y)
: Esto calcula la suma dex
yy
(que es 12) e imprime el resultado.print(x - y)
: Esto calcula la diferencia entrex
yy
(que es 8) e imprime el resultado.print(x * y)
: Esto calcula el producto dex
yy
(que es 20) e imprime el resultado.print(x / y)
: Esto realiza la división entera dex
pory
. Dado que ambos operandos son enteros, Python realiza la división entera por defecto, resultando en5.0
. Nota que el resultado es un flotante, aunque los operandos son enteros.
- El código asigna el valor entero
- Aritmética con Flotantes:
- El código asigna el valor de punto flotante
1.5
a la variablea
y0.5
a la variableb
. - De manera similar a la aritmética con enteros, realiza operaciones utilizando los mismos operadores e imprime los resultados:
print(a + b)
: Esto calcula la suma dea
yb
(que es 2.0) e imprime el resultado.print(a - b)
: Esto calcula la diferencia entrea
yb
(que es 1.0) e imprime el resultado.print(a * b)
: Esto calcula el producto dea
yb
(que es 0.75) e imprime el resultado.print(a / b)
: Esto realiza la división de punto flotante dea
porb
. Dado que al menos uno de los operandos es un flotante, Python realiza la división con precisión de punto flotante, resultando en3.0
.
- El código asigna el valor de punto flotante
Cadenas de Caracteres
Las cadenas de caracteres son secuencias de caracteres que se utilizan para representar texto en la programación. Se pueden crear encerrando caracteres entre comillas simples ('') o comillas dobles (""). Una vez creadas, las cadenas de caracteres se pueden manipular de varias maneras, como agregar nuevos caracteres a ellas o extraer caracteres específicos de ellas.
Las cadenas de caracteres se pueden formatear para incluir valores que cambian dinámicamente, como fechas o entrada del usuario. Esto permite programas más dinámicos e interactivos que pueden responder a la entrada del usuario en tiempo real. En general, las cadenas de caracteres son un concepto fundamental en la programación que permite la representación y manipulación de datos basados en texto.
Ejemplo:
s = 'Hello, world!'
print(s)
Listas
Las listas son una parte esencial de la programación, ya que permiten colecciones ordenadas de elementos. Las listas son mutables, lo que te permite hacer modificaciones en su contenido. Un ejemplo de una lista podría ser una lista de tareas pendientes que podrías usar para llevar un registro de las tareas que debes completar. Podrías agregar o quitar elementos de esta lista a medida que completes tareas o pienses en nuevas.
Además de las listas de tareas, las listas se pueden utilizar para muchos otros propósitos, como almacenar nombres y números de teléfono de empleados, una lista de tus libros favoritos o incluso una lista de países que te gustaría visitar algún día. Las listas también se pueden anidar unas dentro de otras para crear estructuras más complejas. Por ejemplo, una lista de listas de tareas pendientes se podría usar para categorizar tus tareas por tema o prioridad.
Las listas son una parte versátil e integral de la programación que se pueden utilizar de diversas formas para ayudar a organizar y gestionar datos.
Ejemplo:
# Create a list
fruits = ['apple', 'banana', 'cherry']
# Add an item to the list
fruits.append('date')
# Remove an item from the list
fruits.remove('banana')
# Access an item in the list
print(fruits[0]) # 'apple'
Propósito del Código:
Este fragmento de código demuestra cómo crear una lista en Python y realizar operaciones comunes de manipulación de listas, incluyendo agregar, eliminar y acceder a elementos.
Desglose Paso a Paso:
- Creación de una Lista:
- La línea
fruits = ['apple', 'banana', 'cherry']
crea una lista llamadafruits
. Las listas se utilizan para almacenar colecciones ordenadas de elementos en Python. En este caso, la listafruits
contiene tres elementos de tipo cadena: "apple", "banana" y "cherry".
- La línea
- Agregar un Elemento a la Lista (Append):
- La línea
fruits.append('date')
añade el elemento de cadena "date" al final de la listafruits
usando el método.append
. Las listas son mutables, lo que significa que su contenido puede cambiarse después de su creación. El método.append
es una forma conveniente de agregar nuevos elementos al final de una lista.
- La línea
- Eliminar un Elemento de la Lista (Remove):
- La línea
fruits.remove('banana')
elimina la primera aparición del elemento de cadena "banana" de la listafruits
utilizando el método.remove
. Es importante notar que el método.remove
elimina el elemento basado en su valor, no en su posición en la lista. Si el elemento no se encuentra, generará unValueError
.
- La línea
- Acceder a un Elemento en la Lista:
- La línea
print(fruits[0])
imprime el primer elemento de la listafruits
. Las listas se indexan comenzando desde 0, por lo quefruits[0]
se refiere al elemento en el índice 0, que es "apple" en este caso.
- La línea
Tuplas
Las tuplas y las listas son ambas estructuras de datos en Python. Aunque comparten similitudes, como la capacidad de almacenar múltiples valores en una sola variable, también existen diferencias clave. Una de las principales diferencias es que las tuplas son inmutables, lo que significa que una vez que se crea una tupla, no puedes cambiar su contenido. En contraste, las listas son mutables, lo que significa que puedes agregar, eliminar o modificar elementos después de que se crea la lista.
A pesar de su inmutabilidad, las tuplas todavía son útiles en una serie de escenarios. Por ejemplo, se utilizan comúnmente para almacenar valores relacionados juntos, como las coordenadas de un punto en el espacio. Las tuplas también se pueden usar como claves en diccionarios, ya que son hashables. Las tuplas se pueden utilizar para devolver múltiples valores desde una función, lo que las convierte en una herramienta útil para manejar datos complejos.
Si bien las tuplas pueden parecer limitadas debido a su inmutabilidad, ofrecen una serie de ventajas y casos de uso que las convierten en una herramienta valiosa en el conjunto de herramientas de cualquier programador de Python.
Ejemplo:
# Create a tuple
coordinates = (10.0, 20.0)
# Access an item in the tuple
print(coordinates[0]) # 10.0
Conjuntos
Los conjuntos son colecciones desordenadas de elementos únicos. Son útiles en varios escenarios de programación, como contar elementos únicos en una lista o verificar la membresía. Los conjuntos también se pueden combinar mediante operaciones matemáticas como unión, intersección y diferencia. En Python, los conjuntos se representan utilizando llaves y los elementos se separan por comas.
Una característica importante de los conjuntos es que no permiten duplicados. Esto significa que si se agrega un elemento a un conjunto que ya existe, no cambiará el conjunto. Además, los conjuntos son mutables, lo que significa que se pueden agregar o eliminar elementos del conjunto después de que se haya creado. En general, los conjuntos son una herramienta versátil e importante en la programación.
Ejemplo:
# Create a set
fruits = {'apple', 'banana', 'cherry', 'apple'}
# Add an item to the set
fruits.add('date')
# Remove an item from the set
fruits.remove('banana')
# Check if an item is in the set
print('apple' in fruits) # True
Diccionarios
Los diccionarios son estructuras de datos que contienen pares clave-valor, lo que permite búsquedas eficientes y almacenamiento de información. Estos pares pueden representar cualquier tipo de datos, como cadenas, números o incluso otros diccionarios. Además de la búsqueda y el almacenamiento, los diccionarios también se pueden utilizar para la manipulación y el análisis de datos.
Con la flexibilidad y versatilidad de los diccionarios, se han convertido en un elemento básico en muchos lenguajes de programación, utilizados en aplicaciones que van desde la gestión de bases de datos hasta el procesamiento del lenguaje natural.
Ejemplo:
# Create a dictionary
person = {'name': 'Alice', 'age': 25, 'city': 'New York'}
# Access a value in the dictionary
print(person['name']) # 'Alice'
# Change a value in the dictionary
person['age'] = 26
# Add a new key-value pair to the dictionary
person['job'] = 'Engineer'
# Remove a key-value pair from the dictionary
del person['city']
# Print the modified dictionary
print(person)
Propósito del Código:
Este fragmento de código demuestra cómo crear un diccionario en Python, acceder y modificar sus elementos, y realizar operaciones comunes como agregar y eliminar pares clave-valor.
Desglose Paso a Paso:
- Creación de un Diccionario:
- La línea
person = {'name': 'Alice', 'age': 25, 'city': 'New York'}
crea un diccionario llamadoperson
. Los diccionarios son estructuras de datos fundamentales en Python para almacenar colecciones de datos en un formato de clave-valor. En este caso, el diccionarioperson
almacena tres pares clave-valor:- Clave: 'name', Valor: 'Alice' (asocia el nombre "Alice" con la clave 'name')
- Clave: 'age', Valor: 25 (asocia la edad 25 con la clave 'age')
- Clave: 'city', Valor: 'New York' (asocia la ciudad "New York" con la clave 'city')
- La línea
- Acceso a un Valor en el Diccionario:
- La línea
print(person['name'])
recupera el valor asociado con la clave 'name' del diccionarioperson
y lo imprime. Dado que 'name' es una clave, recupera el valor correspondiente, que es "Alice" en este caso.
- La línea
- Cambio de un Valor en el Diccionario:
- La línea
person['age'] = 26
modifica el valor asociado con la clave 'age' en el diccionarioperson
. Los diccionarios son mutables, lo que significa que puedes cambiar su contenido después de su creación. Aquí, actualizamos la edad a 26.
- La línea
- Agregar un Nuevo Par Clave-Valor:
- La línea
person['job'] = 'Engineer'
añade un nuevo par clave-valor al diccionarioperson
. La clave es 'job', y el valor es 'Engineer'. Esto extiende el diccionario con nueva información.
- La línea
- Eliminación de un Par Clave-Valor:
- La línea
del person['city']
elimina el par clave-valor con la clave 'city' del diccionarioperson
. Se utiliza la palabra clavedel
para la eliminación.
- La línea
- Impresión del Diccionario Modificado:
- La línea
print(person)
imprime el contenido del diccionarioperson
modificado. Esto mostrará el diccionario actualizado sin el par clave-valor 'city' y con la edad cambiada.
- La línea
Puntos Clave:
- Los diccionarios son colecciones de pares clave-valor, proporcionando una manera flexible de almacenar y acceder a los datos.
- Creas diccionarios usando llaves
{}
con claves y valores separados por dos puntos (:
). Las claves deben ser únicas e inmutables (por ejemplo, cadenas, números). - El acceso a los elementos se realiza usando la clave dentro de corchetes
[]
. - Puedes modificar valores existentes o agregar nuevos pares clave-valor usando la asignación.
- La palabra clave
del
elimina pares clave-valor del diccionario.
2.1.2 Control de Flujo
El control de flujo es un concepto crucial en la programación. Se refiere al orden en que se ejecuta el código de un programa. En Python, existen varios mecanismos que se pueden utilizar para controlar el flujo de un programa.
Uno de estos es la declaración if
, que permite que el programa tome decisiones basadas en ciertas condiciones. Otro mecanismo importante es el bucle for
, que se utiliza para iterar sobre una secuencia de valores o elementos. Del mismo modo, el bucle while
se puede utilizar para ejecutar un bloque de código repetidamente siempre que se cumpla una cierta condición.
Además de estos mecanismos, Python también proporciona bloques try
/except
, que se utilizan para el manejo de errores. Estos bloques son particularmente útiles cuando un programa encuentra un error o una excepción que no puede manejar, ya que permiten que el programa se recupere de manera adecuada del error y continúe ejecutando su código.
Es importante que los programadores tengan una comprensión sólida del control de flujo y de los diferentes mecanismos que se pueden utilizar para controlarlo en Python. Al utilizar estos mecanismos de manera efectiva, los programadores pueden crear programas que sean eficientes y sólidos, y que puedan manejar una amplia variedad de escenarios y situaciones diferentes.
Declaraciones if
Las declaraciones if
se utilizan para la ejecución condicional, permitiendo que un programa tome decisiones basadas en ciertas condiciones. Esta es una herramienta poderosa que brinda a los desarrolladores un mayor control sobre el flujo de su código al permitirles especificar lo que debe ocurrir en circunstancias particulares.
Por ejemplo, una declaración if
podría utilizarse para verificar si un usuario ha ingresado la contraseña correcta y, si es así, otorgarles acceso a una zona restringida de un sitio web. Alternativamente, podría utilizarse para verificar si un usuario ha ingresado una entrada inválida y pedirles que lo intenten nuevamente.
Al utilizar las declaraciones if
, los desarrolladores pueden crear programas más dinámicos y versátiles que pueden responder a una variedad más amplia de entradas y condiciones por parte del usuario.
Ejemplo:
x = 10
if x > 0:
print('x is positive')
elif x < 0:
print('x is negative')
else:
print('x is zero')
Bucles for
Los bucles for
son una herramienta esencial en la programación. Se utilizan para iterar sobre una secuencia (como una lista o una cadena), lo que permite realizar operaciones en cada elemento de la secuencia. Esto es increíblemente útil en una amplia variedad de contextos.
Por ejemplo, imagine que tiene una lista de elementos y desea realizar el mismo cálculo en cada elemento. Un bucle for
hace que esta tarea sea simple y eficiente. Al iterar sobre la lista, el bucle realiza el cálculo en cada elemento sucesivamente, lo que le ahorra tener que escribir el mismo código una y otra vez.
Además de listas y cadenas, los bucles for
también se pueden utilizar con otros tipos de secuencias, como diccionarios y conjuntos, lo que los convierte en una herramienta increíblemente versátil que todo programador debería tener en su conjunto de herramientas.
Ejemplo:
fruits = ['apple', 'banana', 'cherry']
for fruit in fruits:
print(fruit)
Bucles while
Los bucles while
se utilizan para la ejecución repetida siempre que una condición sea verdadera. Esto significa que si la condición es falsa desde el principio, el bucle nunca se ejecutará. Es importante asegurarse de que la condición eventualmente se vuelva falsa, de lo contrario, el bucle continuará indefinidamente.
En la práctica, los bucles while
pueden ser útiles en situaciones en las que no se sabe cuántas iteraciones serán necesarias. Por ejemplo, si está escribiendo un programa para calcular la raíz cuadrada de un número, es posible que no sepa cuántas iteraciones serán necesarias hasta que obtenga el nivel deseado de precisión.
Otro uso de los bucles while
es preguntar repetidamente al usuario por información hasta que proporcione una entrada válida. Esto puede ser útil para asegurarse de que el programa no se bloquee o se comporte de manera inesperada debido a la entrada inválida del usuario.
En general, los bucles while
son una poderosa construcción de programación que se puede utilizar para resolver una amplia variedad de problemas. Al usarlos de manera efectiva, puede escribir código que sea más eficiente, más fácil de leer y más fácil de mantener.
Ejemplo:
x = 0
while x < 5:
print(x)
x += 1
2.1.3 Bloques Try/Except
Los bloques try
/except
son una parte fundamental de la programación en Python para el manejo de errores. Estos bloques permiten al programador anticipar y manejar errores que pueden ocurrir durante la ejecución de un script de Python. Al utilizar bloques try/except, un programador puede crear un programa más robusto y resistente a errores que puede manejar entradas inesperadas u otros errores sin bloquearse. De hecho, los bloques try/except son tan comúnmente utilizados en la programación en Python que a menudo se consideran un aspecto fundamental de la sintaxis y funcionalidad del lenguaje.
Ejemplo:
try:
x = 1 / 0 # This will raise a ZeroDivisionError
except ZeroDivisionError:
print('You cannot divide by zero!')
2.1.4 Funciones
Las funciones son un concepto clave en la programación que permiten la creación de piezas de código reutilizables. Cuando se define una función en Python, se utiliza la palabra clave def
. Las funciones pueden contener cualquier número de declaraciones, incluyendo bucles, declaraciones condicionales y otras funciones.
Además, las funciones pueden tener parámetros y valores de retorno, lo que permite una mayor flexibilidad en cómo se utilizan. Al dividir un problema en funciones más pequeñas, el código puede hacerse más legible y más fácil de mantener.
Las funciones son una herramienta esencial para cualquier programador que busque mejorar la eficiencia y efectividad de su código.
Ejemplo:
def greet(name):
return f'Hello, {name}!'
print(greet('Alice')) # 'Hello, Alice!'
2.1.5 Clases
La programación orientada a objetos se centra en el concepto de clases. Una clase es esencialmente un plano que describe las propiedades, métodos y comportamientos de los objetos que se crean a partir de ella.
Estos objetos pueden considerarse como instancias de la clase, cada uno con su propio conjunto único de valores para las propiedades definidas por la clase. Cuando creas un objeto a partir de una clase, esencialmente lo estás instanciando, lo que significa que estás creando una nueva instancia de la clase con su propio conjunto de valores.
Una vez que se ha creado un objeto, puedes llamar a sus métodos para realizar diversas tareas. Al definir estos métodos dentro de la clase, puedes asegurarte de que la misma funcionalidad esté disponible para todas las instancias de la clase.
Las clases proporcionan un mecanismo poderoso para organizar y gestionar código complejo, lo que te permite crear código reutilizable y modular que se puede compartir en múltiples proyectos.
Ejemplo:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
return f'Hello, my name is {self.name} and I am {self.age} years old.'
alice = Person('Alice', 25)
print(alice.greet()) # 'Hello, my name is Alice and I am 25 years old.'
2.1.6 Funciones y Módulos Incorporados
Python ofrece una amplia gama de funciones y módulos incorporados que brindan funcionalidad adicional al lenguaje. Estos módulos están diseñados para ser utilizados en una variedad de aplicaciones, desde análisis de datos hasta desarrollo web y más allá.
Por ejemplo, el módulo math
proporciona acceso a funciones matemáticas como la trigonometría, mientras que el módulo os
permite la interacción con el sistema operativo. La biblioteca estándar de Python incluye módulos para trabajar con expresiones regulares, entrada/salida de archivos y comunicación en red, por nombrar solo algunos.
Con tal variedad de herramientas a tu disposición, Python es un lenguaje poderoso que puede manejar una amplia gama de tareas y aplicaciones.
Aquí tienes algunas de las más comúnmente utilizadas:
Funciones Incorporadas
Python tiene muchas funciones incorporadas que realizan una variedad de tareas. Aquí tienes algunos ejemplos:
print()
: Imprime el mensaje especificado en la pantalla.len()
: Devuelve el número de elementos en un objeto.type()
: Devuelve el tipo de un objeto.str()
,int()
,float()
: Convierte un objeto en una cadena, entero o flotante, respectivamente.input()
: Lee una línea desde la entrada (teclado), la convierte en una cadena y la devuelve.
Así es como puedes usar estas funciones:
print(len('Hello, world!')) # 13
print(type(10)) # <class 'int'>
print(int('10')) # 10
name = input('What is your name? ')
Módulos Incorporados
Python también incluye un conjunto de módulos incorporados que puedes importar en tu programa para utilizar. Aquí tienes algunos ejemplos:
math
: Proporciona funciones matemáticas.random
: Proporciona funciones para generar números aleatorios.datetime
: Proporciona funciones para manipular fechas y horas.os
: Proporciona funciones para interactuar con el sistema operativo.
Así es como puedes usar estos módulos:
import math
print(math.sqrt(16)) # 4.0
import random
print(random.randint(1, 10)) # a random integer between 1 and 10
import datetime
print(datetime.datetime.now()) # current date and time
import os
print(os.getcwd()) # current working directory
Esto concluye nuestro curso rápido de Python. Si bien esta sección solo rasca la superficie de lo que Python puede hacer, debería proporcionarte una buena base sobre la que construir. En las próximas secciones, exploraremos algunas de las principales bibliotecas de Python utilizadas en Aprendizaje Automático.
Si deseas obtener una comprensión mejor y más profunda de los conceptos básicos de Python, este libro puede interesarte:

2.1 Curso Intensivo de Python
¡Bienvenido al Capítulo 2! Aquí, profundizaremos en el mundo de Python y sus bibliotecas esenciales que se utilizan ampliamente en el campo del Aprendizaje Automático. Como probablemente ya sepas, Python se ha convertido en el lenguaje preferido de muchos científicos de datos e ingenieros de aprendizaje automático debido a su simplicidad y a las amplias bibliotecas disponibles. La popularidad de Python se debe en gran parte a que es un lenguaje de programación de código abierto que es fácil de aprender y usar.
A lo largo de este capítulo, cubriremos una variedad de temas, desde los conceptos básicos de la programación en Python hasta las bibliotecas esenciales utilizadas en el Aprendizaje Automático. Comenzaremos discutiendo la sintaxis de Python y los tipos de datos, incluyendo variables, bucles, condiciones y funciones. A continuación, exploraremos algunas de las bibliotecas más esenciales utilizadas en el Aprendizaje Automático, como NumPy, Pandas y Matplotlib, y cómo se pueden usar para procesar, analizar y visualizar datos.
También discutiremos los conceptos básicos del Aprendizaje Automático, incluyendo el aprendizaje supervisado y no supervisado, y cómo implementarlos utilizando Python. Al final de este capítulo, tendrás una comprensión sólida de Python y sus principales bibliotecas, estableciendo una base sólida para el resto del libro.
Comencemos con un curso intensivo sobre Python.
Python es un lenguaje de programación de alto nivel, poderoso y versátil que se utiliza ampliamente en diversos campos, como el desarrollo web, el análisis de datos, la inteligencia artificial y más. Su simplicidad y legibilidad lo convierten en un gran lenguaje para principiantes, pero también puede manejar tareas complejas y proyectos a gran escala.
En esta sección, exploraremos los conceptos básicos de Python, discutiendo en detalle los tipos de datos, el flujo de control, las funciones y las clases. También exploraremos algunas de las aplicaciones prácticas de Python en diversas industrias, como finanzas, atención médica y educación. Al final de esta sección, tendrás una comprensión sólida de los fundamentos de Python y podrás construir programas simples por tu cuenta.
Es importante tener en cuenta que esta sección no pretende ser una guía completa de Python, sino más bien una visión general rápida para ayudarte a comenzar. Si ya estás familiarizado con Python, siéntete libre de leer rápidamente esta sección o pasar a la siguiente, donde exploraremos temas más avanzados en programación en Python.
2.1.1 Tipos de Datos
Python tiene varios tipos de datos incorporados, que incluyen enteros, números flotantes, cadenas, listas, tuplas, conjuntos y diccionarios. Aquí tienes un resumen rápido:
Enteros y Números Flotantes
Los enteros son un tipo de número que representan cantidades enteras, mientras que los números flotantes, o números de punto flotante, son un tipo de número que representan cantidades decimales. Ambos tipos de números se pueden utilizar en operaciones aritméticas básicas, como suma, resta, multiplicación y división.
Los enteros se pueden utilizar en operaciones de módulo, que encuentran el resto de una operación de división. Los números flotantes también se pueden utilizar en operaciones matemáticas más complejas, como funciones trigonométricas y logaritmos. Es importante tener en cuenta que al realizar operaciones aritméticas con enteros y números flotantes, el resultado será un número flotante.
Ejemplo:
# Integers
x = 10
y = 2
print(x + y) # Addition
print(x - y) # Subtraction
print(x * y) # Multiplication
print(x / y) # Division
# Floats
a = 1.5
b = 0.5
print(a + b)
print(a - b)
print(a * b)
print(a / b)
Propósito del Código:
Este fragmento de código demuestra cómo realizar operaciones aritméticas básicas con números enteros y de punto flotante en Python. Muestra el comportamiento de los operadores de adición, sustracción, multiplicación y división para ambos tipos de datos.
Desglose Paso a Paso:
- Aritmética con Enteros:
- El código asigna el valor entero
10
a la variablex
y2
a la variabley
. - Luego realiza las siguientes operaciones utilizando los operadores aritméticos:
print(x + y)
: Esto calcula la suma dex
yy
(que es 12) e imprime el resultado.print(x - y)
: Esto calcula la diferencia entrex
yy
(que es 8) e imprime el resultado.print(x * y)
: Esto calcula el producto dex
yy
(que es 20) e imprime el resultado.print(x / y)
: Esto realiza la división entera dex
pory
. Dado que ambos operandos son enteros, Python realiza la división entera por defecto, resultando en5.0
. Nota que el resultado es un flotante, aunque los operandos son enteros.
- El código asigna el valor entero
- Aritmética con Flotantes:
- El código asigna el valor de punto flotante
1.5
a la variablea
y0.5
a la variableb
. - De manera similar a la aritmética con enteros, realiza operaciones utilizando los mismos operadores e imprime los resultados:
print(a + b)
: Esto calcula la suma dea
yb
(que es 2.0) e imprime el resultado.print(a - b)
: Esto calcula la diferencia entrea
yb
(que es 1.0) e imprime el resultado.print(a * b)
: Esto calcula el producto dea
yb
(que es 0.75) e imprime el resultado.print(a / b)
: Esto realiza la división de punto flotante dea
porb
. Dado que al menos uno de los operandos es un flotante, Python realiza la división con precisión de punto flotante, resultando en3.0
.
- El código asigna el valor de punto flotante
Cadenas de Caracteres
Las cadenas de caracteres son secuencias de caracteres que se utilizan para representar texto en la programación. Se pueden crear encerrando caracteres entre comillas simples ('') o comillas dobles (""). Una vez creadas, las cadenas de caracteres se pueden manipular de varias maneras, como agregar nuevos caracteres a ellas o extraer caracteres específicos de ellas.
Las cadenas de caracteres se pueden formatear para incluir valores que cambian dinámicamente, como fechas o entrada del usuario. Esto permite programas más dinámicos e interactivos que pueden responder a la entrada del usuario en tiempo real. En general, las cadenas de caracteres son un concepto fundamental en la programación que permite la representación y manipulación de datos basados en texto.
Ejemplo:
s = 'Hello, world!'
print(s)
Listas
Las listas son una parte esencial de la programación, ya que permiten colecciones ordenadas de elementos. Las listas son mutables, lo que te permite hacer modificaciones en su contenido. Un ejemplo de una lista podría ser una lista de tareas pendientes que podrías usar para llevar un registro de las tareas que debes completar. Podrías agregar o quitar elementos de esta lista a medida que completes tareas o pienses en nuevas.
Además de las listas de tareas, las listas se pueden utilizar para muchos otros propósitos, como almacenar nombres y números de teléfono de empleados, una lista de tus libros favoritos o incluso una lista de países que te gustaría visitar algún día. Las listas también se pueden anidar unas dentro de otras para crear estructuras más complejas. Por ejemplo, una lista de listas de tareas pendientes se podría usar para categorizar tus tareas por tema o prioridad.
Las listas son una parte versátil e integral de la programación que se pueden utilizar de diversas formas para ayudar a organizar y gestionar datos.
Ejemplo:
# Create a list
fruits = ['apple', 'banana', 'cherry']
# Add an item to the list
fruits.append('date')
# Remove an item from the list
fruits.remove('banana')
# Access an item in the list
print(fruits[0]) # 'apple'
Propósito del Código:
Este fragmento de código demuestra cómo crear una lista en Python y realizar operaciones comunes de manipulación de listas, incluyendo agregar, eliminar y acceder a elementos.
Desglose Paso a Paso:
- Creación de una Lista:
- La línea
fruits = ['apple', 'banana', 'cherry']
crea una lista llamadafruits
. Las listas se utilizan para almacenar colecciones ordenadas de elementos en Python. En este caso, la listafruits
contiene tres elementos de tipo cadena: "apple", "banana" y "cherry".
- La línea
- Agregar un Elemento a la Lista (Append):
- La línea
fruits.append('date')
añade el elemento de cadena "date" al final de la listafruits
usando el método.append
. Las listas son mutables, lo que significa que su contenido puede cambiarse después de su creación. El método.append
es una forma conveniente de agregar nuevos elementos al final de una lista.
- La línea
- Eliminar un Elemento de la Lista (Remove):
- La línea
fruits.remove('banana')
elimina la primera aparición del elemento de cadena "banana" de la listafruits
utilizando el método.remove
. Es importante notar que el método.remove
elimina el elemento basado en su valor, no en su posición en la lista. Si el elemento no se encuentra, generará unValueError
.
- La línea
- Acceder a un Elemento en la Lista:
- La línea
print(fruits[0])
imprime el primer elemento de la listafruits
. Las listas se indexan comenzando desde 0, por lo quefruits[0]
se refiere al elemento en el índice 0, que es "apple" en este caso.
- La línea
Tuplas
Las tuplas y las listas son ambas estructuras de datos en Python. Aunque comparten similitudes, como la capacidad de almacenar múltiples valores en una sola variable, también existen diferencias clave. Una de las principales diferencias es que las tuplas son inmutables, lo que significa que una vez que se crea una tupla, no puedes cambiar su contenido. En contraste, las listas son mutables, lo que significa que puedes agregar, eliminar o modificar elementos después de que se crea la lista.
A pesar de su inmutabilidad, las tuplas todavía son útiles en una serie de escenarios. Por ejemplo, se utilizan comúnmente para almacenar valores relacionados juntos, como las coordenadas de un punto en el espacio. Las tuplas también se pueden usar como claves en diccionarios, ya que son hashables. Las tuplas se pueden utilizar para devolver múltiples valores desde una función, lo que las convierte en una herramienta útil para manejar datos complejos.
Si bien las tuplas pueden parecer limitadas debido a su inmutabilidad, ofrecen una serie de ventajas y casos de uso que las convierten en una herramienta valiosa en el conjunto de herramientas de cualquier programador de Python.
Ejemplo:
# Create a tuple
coordinates = (10.0, 20.0)
# Access an item in the tuple
print(coordinates[0]) # 10.0
Conjuntos
Los conjuntos son colecciones desordenadas de elementos únicos. Son útiles en varios escenarios de programación, como contar elementos únicos en una lista o verificar la membresía. Los conjuntos también se pueden combinar mediante operaciones matemáticas como unión, intersección y diferencia. En Python, los conjuntos se representan utilizando llaves y los elementos se separan por comas.
Una característica importante de los conjuntos es que no permiten duplicados. Esto significa que si se agrega un elemento a un conjunto que ya existe, no cambiará el conjunto. Además, los conjuntos son mutables, lo que significa que se pueden agregar o eliminar elementos del conjunto después de que se haya creado. En general, los conjuntos son una herramienta versátil e importante en la programación.
Ejemplo:
# Create a set
fruits = {'apple', 'banana', 'cherry', 'apple'}
# Add an item to the set
fruits.add('date')
# Remove an item from the set
fruits.remove('banana')
# Check if an item is in the set
print('apple' in fruits) # True
Diccionarios
Los diccionarios son estructuras de datos que contienen pares clave-valor, lo que permite búsquedas eficientes y almacenamiento de información. Estos pares pueden representar cualquier tipo de datos, como cadenas, números o incluso otros diccionarios. Además de la búsqueda y el almacenamiento, los diccionarios también se pueden utilizar para la manipulación y el análisis de datos.
Con la flexibilidad y versatilidad de los diccionarios, se han convertido en un elemento básico en muchos lenguajes de programación, utilizados en aplicaciones que van desde la gestión de bases de datos hasta el procesamiento del lenguaje natural.
Ejemplo:
# Create a dictionary
person = {'name': 'Alice', 'age': 25, 'city': 'New York'}
# Access a value in the dictionary
print(person['name']) # 'Alice'
# Change a value in the dictionary
person['age'] = 26
# Add a new key-value pair to the dictionary
person['job'] = 'Engineer'
# Remove a key-value pair from the dictionary
del person['city']
# Print the modified dictionary
print(person)
Propósito del Código:
Este fragmento de código demuestra cómo crear un diccionario en Python, acceder y modificar sus elementos, y realizar operaciones comunes como agregar y eliminar pares clave-valor.
Desglose Paso a Paso:
- Creación de un Diccionario:
- La línea
person = {'name': 'Alice', 'age': 25, 'city': 'New York'}
crea un diccionario llamadoperson
. Los diccionarios son estructuras de datos fundamentales en Python para almacenar colecciones de datos en un formato de clave-valor. En este caso, el diccionarioperson
almacena tres pares clave-valor:- Clave: 'name', Valor: 'Alice' (asocia el nombre "Alice" con la clave 'name')
- Clave: 'age', Valor: 25 (asocia la edad 25 con la clave 'age')
- Clave: 'city', Valor: 'New York' (asocia la ciudad "New York" con la clave 'city')
- La línea
- Acceso a un Valor en el Diccionario:
- La línea
print(person['name'])
recupera el valor asociado con la clave 'name' del diccionarioperson
y lo imprime. Dado que 'name' es una clave, recupera el valor correspondiente, que es "Alice" en este caso.
- La línea
- Cambio de un Valor en el Diccionario:
- La línea
person['age'] = 26
modifica el valor asociado con la clave 'age' en el diccionarioperson
. Los diccionarios son mutables, lo que significa que puedes cambiar su contenido después de su creación. Aquí, actualizamos la edad a 26.
- La línea
- Agregar un Nuevo Par Clave-Valor:
- La línea
person['job'] = 'Engineer'
añade un nuevo par clave-valor al diccionarioperson
. La clave es 'job', y el valor es 'Engineer'. Esto extiende el diccionario con nueva información.
- La línea
- Eliminación de un Par Clave-Valor:
- La línea
del person['city']
elimina el par clave-valor con la clave 'city' del diccionarioperson
. Se utiliza la palabra clavedel
para la eliminación.
- La línea
- Impresión del Diccionario Modificado:
- La línea
print(person)
imprime el contenido del diccionarioperson
modificado. Esto mostrará el diccionario actualizado sin el par clave-valor 'city' y con la edad cambiada.
- La línea
Puntos Clave:
- Los diccionarios son colecciones de pares clave-valor, proporcionando una manera flexible de almacenar y acceder a los datos.
- Creas diccionarios usando llaves
{}
con claves y valores separados por dos puntos (:
). Las claves deben ser únicas e inmutables (por ejemplo, cadenas, números). - El acceso a los elementos se realiza usando la clave dentro de corchetes
[]
. - Puedes modificar valores existentes o agregar nuevos pares clave-valor usando la asignación.
- La palabra clave
del
elimina pares clave-valor del diccionario.
2.1.2 Control de Flujo
El control de flujo es un concepto crucial en la programación. Se refiere al orden en que se ejecuta el código de un programa. En Python, existen varios mecanismos que se pueden utilizar para controlar el flujo de un programa.
Uno de estos es la declaración if
, que permite que el programa tome decisiones basadas en ciertas condiciones. Otro mecanismo importante es el bucle for
, que se utiliza para iterar sobre una secuencia de valores o elementos. Del mismo modo, el bucle while
se puede utilizar para ejecutar un bloque de código repetidamente siempre que se cumpla una cierta condición.
Además de estos mecanismos, Python también proporciona bloques try
/except
, que se utilizan para el manejo de errores. Estos bloques son particularmente útiles cuando un programa encuentra un error o una excepción que no puede manejar, ya que permiten que el programa se recupere de manera adecuada del error y continúe ejecutando su código.
Es importante que los programadores tengan una comprensión sólida del control de flujo y de los diferentes mecanismos que se pueden utilizar para controlarlo en Python. Al utilizar estos mecanismos de manera efectiva, los programadores pueden crear programas que sean eficientes y sólidos, y que puedan manejar una amplia variedad de escenarios y situaciones diferentes.
Declaraciones if
Las declaraciones if
se utilizan para la ejecución condicional, permitiendo que un programa tome decisiones basadas en ciertas condiciones. Esta es una herramienta poderosa que brinda a los desarrolladores un mayor control sobre el flujo de su código al permitirles especificar lo que debe ocurrir en circunstancias particulares.
Por ejemplo, una declaración if
podría utilizarse para verificar si un usuario ha ingresado la contraseña correcta y, si es así, otorgarles acceso a una zona restringida de un sitio web. Alternativamente, podría utilizarse para verificar si un usuario ha ingresado una entrada inválida y pedirles que lo intenten nuevamente.
Al utilizar las declaraciones if
, los desarrolladores pueden crear programas más dinámicos y versátiles que pueden responder a una variedad más amplia de entradas y condiciones por parte del usuario.
Ejemplo:
x = 10
if x > 0:
print('x is positive')
elif x < 0:
print('x is negative')
else:
print('x is zero')
Bucles for
Los bucles for
son una herramienta esencial en la programación. Se utilizan para iterar sobre una secuencia (como una lista o una cadena), lo que permite realizar operaciones en cada elemento de la secuencia. Esto es increíblemente útil en una amplia variedad de contextos.
Por ejemplo, imagine que tiene una lista de elementos y desea realizar el mismo cálculo en cada elemento. Un bucle for
hace que esta tarea sea simple y eficiente. Al iterar sobre la lista, el bucle realiza el cálculo en cada elemento sucesivamente, lo que le ahorra tener que escribir el mismo código una y otra vez.
Además de listas y cadenas, los bucles for
también se pueden utilizar con otros tipos de secuencias, como diccionarios y conjuntos, lo que los convierte en una herramienta increíblemente versátil que todo programador debería tener en su conjunto de herramientas.
Ejemplo:
fruits = ['apple', 'banana', 'cherry']
for fruit in fruits:
print(fruit)
Bucles while
Los bucles while
se utilizan para la ejecución repetida siempre que una condición sea verdadera. Esto significa que si la condición es falsa desde el principio, el bucle nunca se ejecutará. Es importante asegurarse de que la condición eventualmente se vuelva falsa, de lo contrario, el bucle continuará indefinidamente.
En la práctica, los bucles while
pueden ser útiles en situaciones en las que no se sabe cuántas iteraciones serán necesarias. Por ejemplo, si está escribiendo un programa para calcular la raíz cuadrada de un número, es posible que no sepa cuántas iteraciones serán necesarias hasta que obtenga el nivel deseado de precisión.
Otro uso de los bucles while
es preguntar repetidamente al usuario por información hasta que proporcione una entrada válida. Esto puede ser útil para asegurarse de que el programa no se bloquee o se comporte de manera inesperada debido a la entrada inválida del usuario.
En general, los bucles while
son una poderosa construcción de programación que se puede utilizar para resolver una amplia variedad de problemas. Al usarlos de manera efectiva, puede escribir código que sea más eficiente, más fácil de leer y más fácil de mantener.
Ejemplo:
x = 0
while x < 5:
print(x)
x += 1
2.1.3 Bloques Try/Except
Los bloques try
/except
son una parte fundamental de la programación en Python para el manejo de errores. Estos bloques permiten al programador anticipar y manejar errores que pueden ocurrir durante la ejecución de un script de Python. Al utilizar bloques try/except, un programador puede crear un programa más robusto y resistente a errores que puede manejar entradas inesperadas u otros errores sin bloquearse. De hecho, los bloques try/except son tan comúnmente utilizados en la programación en Python que a menudo se consideran un aspecto fundamental de la sintaxis y funcionalidad del lenguaje.
Ejemplo:
try:
x = 1 / 0 # This will raise a ZeroDivisionError
except ZeroDivisionError:
print('You cannot divide by zero!')
2.1.4 Funciones
Las funciones son un concepto clave en la programación que permiten la creación de piezas de código reutilizables. Cuando se define una función en Python, se utiliza la palabra clave def
. Las funciones pueden contener cualquier número de declaraciones, incluyendo bucles, declaraciones condicionales y otras funciones.
Además, las funciones pueden tener parámetros y valores de retorno, lo que permite una mayor flexibilidad en cómo se utilizan. Al dividir un problema en funciones más pequeñas, el código puede hacerse más legible y más fácil de mantener.
Las funciones son una herramienta esencial para cualquier programador que busque mejorar la eficiencia y efectividad de su código.
Ejemplo:
def greet(name):
return f'Hello, {name}!'
print(greet('Alice')) # 'Hello, Alice!'
2.1.5 Clases
La programación orientada a objetos se centra en el concepto de clases. Una clase es esencialmente un plano que describe las propiedades, métodos y comportamientos de los objetos que se crean a partir de ella.
Estos objetos pueden considerarse como instancias de la clase, cada uno con su propio conjunto único de valores para las propiedades definidas por la clase. Cuando creas un objeto a partir de una clase, esencialmente lo estás instanciando, lo que significa que estás creando una nueva instancia de la clase con su propio conjunto de valores.
Una vez que se ha creado un objeto, puedes llamar a sus métodos para realizar diversas tareas. Al definir estos métodos dentro de la clase, puedes asegurarte de que la misma funcionalidad esté disponible para todas las instancias de la clase.
Las clases proporcionan un mecanismo poderoso para organizar y gestionar código complejo, lo que te permite crear código reutilizable y modular que se puede compartir en múltiples proyectos.
Ejemplo:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
return f'Hello, my name is {self.name} and I am {self.age} years old.'
alice = Person('Alice', 25)
print(alice.greet()) # 'Hello, my name is Alice and I am 25 years old.'
2.1.6 Funciones y Módulos Incorporados
Python ofrece una amplia gama de funciones y módulos incorporados que brindan funcionalidad adicional al lenguaje. Estos módulos están diseñados para ser utilizados en una variedad de aplicaciones, desde análisis de datos hasta desarrollo web y más allá.
Por ejemplo, el módulo math
proporciona acceso a funciones matemáticas como la trigonometría, mientras que el módulo os
permite la interacción con el sistema operativo. La biblioteca estándar de Python incluye módulos para trabajar con expresiones regulares, entrada/salida de archivos y comunicación en red, por nombrar solo algunos.
Con tal variedad de herramientas a tu disposición, Python es un lenguaje poderoso que puede manejar una amplia gama de tareas y aplicaciones.
Aquí tienes algunas de las más comúnmente utilizadas:
Funciones Incorporadas
Python tiene muchas funciones incorporadas que realizan una variedad de tareas. Aquí tienes algunos ejemplos:
print()
: Imprime el mensaje especificado en la pantalla.len()
: Devuelve el número de elementos en un objeto.type()
: Devuelve el tipo de un objeto.str()
,int()
,float()
: Convierte un objeto en una cadena, entero o flotante, respectivamente.input()
: Lee una línea desde la entrada (teclado), la convierte en una cadena y la devuelve.
Así es como puedes usar estas funciones:
print(len('Hello, world!')) # 13
print(type(10)) # <class 'int'>
print(int('10')) # 10
name = input('What is your name? ')
Módulos Incorporados
Python también incluye un conjunto de módulos incorporados que puedes importar en tu programa para utilizar. Aquí tienes algunos ejemplos:
math
: Proporciona funciones matemáticas.random
: Proporciona funciones para generar números aleatorios.datetime
: Proporciona funciones para manipular fechas y horas.os
: Proporciona funciones para interactuar con el sistema operativo.
Así es como puedes usar estos módulos:
import math
print(math.sqrt(16)) # 4.0
import random
print(random.randint(1, 10)) # a random integer between 1 and 10
import datetime
print(datetime.datetime.now()) # current date and time
import os
print(os.getcwd()) # current working directory
Esto concluye nuestro curso rápido de Python. Si bien esta sección solo rasca la superficie de lo que Python puede hacer, debería proporcionarte una buena base sobre la que construir. En las próximas secciones, exploraremos algunas de las principales bibliotecas de Python utilizadas en Aprendizaje Automático.
Si deseas obtener una comprensión mejor y más profunda de los conceptos básicos de Python, este libro puede interesarte:

2.1 Curso Intensivo de Python
¡Bienvenido al Capítulo 2! Aquí, profundizaremos en el mundo de Python y sus bibliotecas esenciales que se utilizan ampliamente en el campo del Aprendizaje Automático. Como probablemente ya sepas, Python se ha convertido en el lenguaje preferido de muchos científicos de datos e ingenieros de aprendizaje automático debido a su simplicidad y a las amplias bibliotecas disponibles. La popularidad de Python se debe en gran parte a que es un lenguaje de programación de código abierto que es fácil de aprender y usar.
A lo largo de este capítulo, cubriremos una variedad de temas, desde los conceptos básicos de la programación en Python hasta las bibliotecas esenciales utilizadas en el Aprendizaje Automático. Comenzaremos discutiendo la sintaxis de Python y los tipos de datos, incluyendo variables, bucles, condiciones y funciones. A continuación, exploraremos algunas de las bibliotecas más esenciales utilizadas en el Aprendizaje Automático, como NumPy, Pandas y Matplotlib, y cómo se pueden usar para procesar, analizar y visualizar datos.
También discutiremos los conceptos básicos del Aprendizaje Automático, incluyendo el aprendizaje supervisado y no supervisado, y cómo implementarlos utilizando Python. Al final de este capítulo, tendrás una comprensión sólida de Python y sus principales bibliotecas, estableciendo una base sólida para el resto del libro.
Comencemos con un curso intensivo sobre Python.
Python es un lenguaje de programación de alto nivel, poderoso y versátil que se utiliza ampliamente en diversos campos, como el desarrollo web, el análisis de datos, la inteligencia artificial y más. Su simplicidad y legibilidad lo convierten en un gran lenguaje para principiantes, pero también puede manejar tareas complejas y proyectos a gran escala.
En esta sección, exploraremos los conceptos básicos de Python, discutiendo en detalle los tipos de datos, el flujo de control, las funciones y las clases. También exploraremos algunas de las aplicaciones prácticas de Python en diversas industrias, como finanzas, atención médica y educación. Al final de esta sección, tendrás una comprensión sólida de los fundamentos de Python y podrás construir programas simples por tu cuenta.
Es importante tener en cuenta que esta sección no pretende ser una guía completa de Python, sino más bien una visión general rápida para ayudarte a comenzar. Si ya estás familiarizado con Python, siéntete libre de leer rápidamente esta sección o pasar a la siguiente, donde exploraremos temas más avanzados en programación en Python.
2.1.1 Tipos de Datos
Python tiene varios tipos de datos incorporados, que incluyen enteros, números flotantes, cadenas, listas, tuplas, conjuntos y diccionarios. Aquí tienes un resumen rápido:
Enteros y Números Flotantes
Los enteros son un tipo de número que representan cantidades enteras, mientras que los números flotantes, o números de punto flotante, son un tipo de número que representan cantidades decimales. Ambos tipos de números se pueden utilizar en operaciones aritméticas básicas, como suma, resta, multiplicación y división.
Los enteros se pueden utilizar en operaciones de módulo, que encuentran el resto de una operación de división. Los números flotantes también se pueden utilizar en operaciones matemáticas más complejas, como funciones trigonométricas y logaritmos. Es importante tener en cuenta que al realizar operaciones aritméticas con enteros y números flotantes, el resultado será un número flotante.
Ejemplo:
# Integers
x = 10
y = 2
print(x + y) # Addition
print(x - y) # Subtraction
print(x * y) # Multiplication
print(x / y) # Division
# Floats
a = 1.5
b = 0.5
print(a + b)
print(a - b)
print(a * b)
print(a / b)
Propósito del Código:
Este fragmento de código demuestra cómo realizar operaciones aritméticas básicas con números enteros y de punto flotante en Python. Muestra el comportamiento de los operadores de adición, sustracción, multiplicación y división para ambos tipos de datos.
Desglose Paso a Paso:
- Aritmética con Enteros:
- El código asigna el valor entero
10
a la variablex
y2
a la variabley
. - Luego realiza las siguientes operaciones utilizando los operadores aritméticos:
print(x + y)
: Esto calcula la suma dex
yy
(que es 12) e imprime el resultado.print(x - y)
: Esto calcula la diferencia entrex
yy
(que es 8) e imprime el resultado.print(x * y)
: Esto calcula el producto dex
yy
(que es 20) e imprime el resultado.print(x / y)
: Esto realiza la división entera dex
pory
. Dado que ambos operandos son enteros, Python realiza la división entera por defecto, resultando en5.0
. Nota que el resultado es un flotante, aunque los operandos son enteros.
- El código asigna el valor entero
- Aritmética con Flotantes:
- El código asigna el valor de punto flotante
1.5
a la variablea
y0.5
a la variableb
. - De manera similar a la aritmética con enteros, realiza operaciones utilizando los mismos operadores e imprime los resultados:
print(a + b)
: Esto calcula la suma dea
yb
(que es 2.0) e imprime el resultado.print(a - b)
: Esto calcula la diferencia entrea
yb
(que es 1.0) e imprime el resultado.print(a * b)
: Esto calcula el producto dea
yb
(que es 0.75) e imprime el resultado.print(a / b)
: Esto realiza la división de punto flotante dea
porb
. Dado que al menos uno de los operandos es un flotante, Python realiza la división con precisión de punto flotante, resultando en3.0
.
- El código asigna el valor de punto flotante
Cadenas de Caracteres
Las cadenas de caracteres son secuencias de caracteres que se utilizan para representar texto en la programación. Se pueden crear encerrando caracteres entre comillas simples ('') o comillas dobles (""). Una vez creadas, las cadenas de caracteres se pueden manipular de varias maneras, como agregar nuevos caracteres a ellas o extraer caracteres específicos de ellas.
Las cadenas de caracteres se pueden formatear para incluir valores que cambian dinámicamente, como fechas o entrada del usuario. Esto permite programas más dinámicos e interactivos que pueden responder a la entrada del usuario en tiempo real. En general, las cadenas de caracteres son un concepto fundamental en la programación que permite la representación y manipulación de datos basados en texto.
Ejemplo:
s = 'Hello, world!'
print(s)
Listas
Las listas son una parte esencial de la programación, ya que permiten colecciones ordenadas de elementos. Las listas son mutables, lo que te permite hacer modificaciones en su contenido. Un ejemplo de una lista podría ser una lista de tareas pendientes que podrías usar para llevar un registro de las tareas que debes completar. Podrías agregar o quitar elementos de esta lista a medida que completes tareas o pienses en nuevas.
Además de las listas de tareas, las listas se pueden utilizar para muchos otros propósitos, como almacenar nombres y números de teléfono de empleados, una lista de tus libros favoritos o incluso una lista de países que te gustaría visitar algún día. Las listas también se pueden anidar unas dentro de otras para crear estructuras más complejas. Por ejemplo, una lista de listas de tareas pendientes se podría usar para categorizar tus tareas por tema o prioridad.
Las listas son una parte versátil e integral de la programación que se pueden utilizar de diversas formas para ayudar a organizar y gestionar datos.
Ejemplo:
# Create a list
fruits = ['apple', 'banana', 'cherry']
# Add an item to the list
fruits.append('date')
# Remove an item from the list
fruits.remove('banana')
# Access an item in the list
print(fruits[0]) # 'apple'
Propósito del Código:
Este fragmento de código demuestra cómo crear una lista en Python y realizar operaciones comunes de manipulación de listas, incluyendo agregar, eliminar y acceder a elementos.
Desglose Paso a Paso:
- Creación de una Lista:
- La línea
fruits = ['apple', 'banana', 'cherry']
crea una lista llamadafruits
. Las listas se utilizan para almacenar colecciones ordenadas de elementos en Python. En este caso, la listafruits
contiene tres elementos de tipo cadena: "apple", "banana" y "cherry".
- La línea
- Agregar un Elemento a la Lista (Append):
- La línea
fruits.append('date')
añade el elemento de cadena "date" al final de la listafruits
usando el método.append
. Las listas son mutables, lo que significa que su contenido puede cambiarse después de su creación. El método.append
es una forma conveniente de agregar nuevos elementos al final de una lista.
- La línea
- Eliminar un Elemento de la Lista (Remove):
- La línea
fruits.remove('banana')
elimina la primera aparición del elemento de cadena "banana" de la listafruits
utilizando el método.remove
. Es importante notar que el método.remove
elimina el elemento basado en su valor, no en su posición en la lista. Si el elemento no se encuentra, generará unValueError
.
- La línea
- Acceder a un Elemento en la Lista:
- La línea
print(fruits[0])
imprime el primer elemento de la listafruits
. Las listas se indexan comenzando desde 0, por lo quefruits[0]
se refiere al elemento en el índice 0, que es "apple" en este caso.
- La línea
Tuplas
Las tuplas y las listas son ambas estructuras de datos en Python. Aunque comparten similitudes, como la capacidad de almacenar múltiples valores en una sola variable, también existen diferencias clave. Una de las principales diferencias es que las tuplas son inmutables, lo que significa que una vez que se crea una tupla, no puedes cambiar su contenido. En contraste, las listas son mutables, lo que significa que puedes agregar, eliminar o modificar elementos después de que se crea la lista.
A pesar de su inmutabilidad, las tuplas todavía son útiles en una serie de escenarios. Por ejemplo, se utilizan comúnmente para almacenar valores relacionados juntos, como las coordenadas de un punto en el espacio. Las tuplas también se pueden usar como claves en diccionarios, ya que son hashables. Las tuplas se pueden utilizar para devolver múltiples valores desde una función, lo que las convierte en una herramienta útil para manejar datos complejos.
Si bien las tuplas pueden parecer limitadas debido a su inmutabilidad, ofrecen una serie de ventajas y casos de uso que las convierten en una herramienta valiosa en el conjunto de herramientas de cualquier programador de Python.
Ejemplo:
# Create a tuple
coordinates = (10.0, 20.0)
# Access an item in the tuple
print(coordinates[0]) # 10.0
Conjuntos
Los conjuntos son colecciones desordenadas de elementos únicos. Son útiles en varios escenarios de programación, como contar elementos únicos en una lista o verificar la membresía. Los conjuntos también se pueden combinar mediante operaciones matemáticas como unión, intersección y diferencia. En Python, los conjuntos se representan utilizando llaves y los elementos se separan por comas.
Una característica importante de los conjuntos es que no permiten duplicados. Esto significa que si se agrega un elemento a un conjunto que ya existe, no cambiará el conjunto. Además, los conjuntos son mutables, lo que significa que se pueden agregar o eliminar elementos del conjunto después de que se haya creado. En general, los conjuntos son una herramienta versátil e importante en la programación.
Ejemplo:
# Create a set
fruits = {'apple', 'banana', 'cherry', 'apple'}
# Add an item to the set
fruits.add('date')
# Remove an item from the set
fruits.remove('banana')
# Check if an item is in the set
print('apple' in fruits) # True
Diccionarios
Los diccionarios son estructuras de datos que contienen pares clave-valor, lo que permite búsquedas eficientes y almacenamiento de información. Estos pares pueden representar cualquier tipo de datos, como cadenas, números o incluso otros diccionarios. Además de la búsqueda y el almacenamiento, los diccionarios también se pueden utilizar para la manipulación y el análisis de datos.
Con la flexibilidad y versatilidad de los diccionarios, se han convertido en un elemento básico en muchos lenguajes de programación, utilizados en aplicaciones que van desde la gestión de bases de datos hasta el procesamiento del lenguaje natural.
Ejemplo:
# Create a dictionary
person = {'name': 'Alice', 'age': 25, 'city': 'New York'}
# Access a value in the dictionary
print(person['name']) # 'Alice'
# Change a value in the dictionary
person['age'] = 26
# Add a new key-value pair to the dictionary
person['job'] = 'Engineer'
# Remove a key-value pair from the dictionary
del person['city']
# Print the modified dictionary
print(person)
Propósito del Código:
Este fragmento de código demuestra cómo crear un diccionario en Python, acceder y modificar sus elementos, y realizar operaciones comunes como agregar y eliminar pares clave-valor.
Desglose Paso a Paso:
- Creación de un Diccionario:
- La línea
person = {'name': 'Alice', 'age': 25, 'city': 'New York'}
crea un diccionario llamadoperson
. Los diccionarios son estructuras de datos fundamentales en Python para almacenar colecciones de datos en un formato de clave-valor. En este caso, el diccionarioperson
almacena tres pares clave-valor:- Clave: 'name', Valor: 'Alice' (asocia el nombre "Alice" con la clave 'name')
- Clave: 'age', Valor: 25 (asocia la edad 25 con la clave 'age')
- Clave: 'city', Valor: 'New York' (asocia la ciudad "New York" con la clave 'city')
- La línea
- Acceso a un Valor en el Diccionario:
- La línea
print(person['name'])
recupera el valor asociado con la clave 'name' del diccionarioperson
y lo imprime. Dado que 'name' es una clave, recupera el valor correspondiente, que es "Alice" en este caso.
- La línea
- Cambio de un Valor en el Diccionario:
- La línea
person['age'] = 26
modifica el valor asociado con la clave 'age' en el diccionarioperson
. Los diccionarios son mutables, lo que significa que puedes cambiar su contenido después de su creación. Aquí, actualizamos la edad a 26.
- La línea
- Agregar un Nuevo Par Clave-Valor:
- La línea
person['job'] = 'Engineer'
añade un nuevo par clave-valor al diccionarioperson
. La clave es 'job', y el valor es 'Engineer'. Esto extiende el diccionario con nueva información.
- La línea
- Eliminación de un Par Clave-Valor:
- La línea
del person['city']
elimina el par clave-valor con la clave 'city' del diccionarioperson
. Se utiliza la palabra clavedel
para la eliminación.
- La línea
- Impresión del Diccionario Modificado:
- La línea
print(person)
imprime el contenido del diccionarioperson
modificado. Esto mostrará el diccionario actualizado sin el par clave-valor 'city' y con la edad cambiada.
- La línea
Puntos Clave:
- Los diccionarios son colecciones de pares clave-valor, proporcionando una manera flexible de almacenar y acceder a los datos.
- Creas diccionarios usando llaves
{}
con claves y valores separados por dos puntos (:
). Las claves deben ser únicas e inmutables (por ejemplo, cadenas, números). - El acceso a los elementos se realiza usando la clave dentro de corchetes
[]
. - Puedes modificar valores existentes o agregar nuevos pares clave-valor usando la asignación.
- La palabra clave
del
elimina pares clave-valor del diccionario.
2.1.2 Control de Flujo
El control de flujo es un concepto crucial en la programación. Se refiere al orden en que se ejecuta el código de un programa. En Python, existen varios mecanismos que se pueden utilizar para controlar el flujo de un programa.
Uno de estos es la declaración if
, que permite que el programa tome decisiones basadas en ciertas condiciones. Otro mecanismo importante es el bucle for
, que se utiliza para iterar sobre una secuencia de valores o elementos. Del mismo modo, el bucle while
se puede utilizar para ejecutar un bloque de código repetidamente siempre que se cumpla una cierta condición.
Además de estos mecanismos, Python también proporciona bloques try
/except
, que se utilizan para el manejo de errores. Estos bloques son particularmente útiles cuando un programa encuentra un error o una excepción que no puede manejar, ya que permiten que el programa se recupere de manera adecuada del error y continúe ejecutando su código.
Es importante que los programadores tengan una comprensión sólida del control de flujo y de los diferentes mecanismos que se pueden utilizar para controlarlo en Python. Al utilizar estos mecanismos de manera efectiva, los programadores pueden crear programas que sean eficientes y sólidos, y que puedan manejar una amplia variedad de escenarios y situaciones diferentes.
Declaraciones if
Las declaraciones if
se utilizan para la ejecución condicional, permitiendo que un programa tome decisiones basadas en ciertas condiciones. Esta es una herramienta poderosa que brinda a los desarrolladores un mayor control sobre el flujo de su código al permitirles especificar lo que debe ocurrir en circunstancias particulares.
Por ejemplo, una declaración if
podría utilizarse para verificar si un usuario ha ingresado la contraseña correcta y, si es así, otorgarles acceso a una zona restringida de un sitio web. Alternativamente, podría utilizarse para verificar si un usuario ha ingresado una entrada inválida y pedirles que lo intenten nuevamente.
Al utilizar las declaraciones if
, los desarrolladores pueden crear programas más dinámicos y versátiles que pueden responder a una variedad más amplia de entradas y condiciones por parte del usuario.
Ejemplo:
x = 10
if x > 0:
print('x is positive')
elif x < 0:
print('x is negative')
else:
print('x is zero')
Bucles for
Los bucles for
son una herramienta esencial en la programación. Se utilizan para iterar sobre una secuencia (como una lista o una cadena), lo que permite realizar operaciones en cada elemento de la secuencia. Esto es increíblemente útil en una amplia variedad de contextos.
Por ejemplo, imagine que tiene una lista de elementos y desea realizar el mismo cálculo en cada elemento. Un bucle for
hace que esta tarea sea simple y eficiente. Al iterar sobre la lista, el bucle realiza el cálculo en cada elemento sucesivamente, lo que le ahorra tener que escribir el mismo código una y otra vez.
Además de listas y cadenas, los bucles for
también se pueden utilizar con otros tipos de secuencias, como diccionarios y conjuntos, lo que los convierte en una herramienta increíblemente versátil que todo programador debería tener en su conjunto de herramientas.
Ejemplo:
fruits = ['apple', 'banana', 'cherry']
for fruit in fruits:
print(fruit)
Bucles while
Los bucles while
se utilizan para la ejecución repetida siempre que una condición sea verdadera. Esto significa que si la condición es falsa desde el principio, el bucle nunca se ejecutará. Es importante asegurarse de que la condición eventualmente se vuelva falsa, de lo contrario, el bucle continuará indefinidamente.
En la práctica, los bucles while
pueden ser útiles en situaciones en las que no se sabe cuántas iteraciones serán necesarias. Por ejemplo, si está escribiendo un programa para calcular la raíz cuadrada de un número, es posible que no sepa cuántas iteraciones serán necesarias hasta que obtenga el nivel deseado de precisión.
Otro uso de los bucles while
es preguntar repetidamente al usuario por información hasta que proporcione una entrada válida. Esto puede ser útil para asegurarse de que el programa no se bloquee o se comporte de manera inesperada debido a la entrada inválida del usuario.
En general, los bucles while
son una poderosa construcción de programación que se puede utilizar para resolver una amplia variedad de problemas. Al usarlos de manera efectiva, puede escribir código que sea más eficiente, más fácil de leer y más fácil de mantener.
Ejemplo:
x = 0
while x < 5:
print(x)
x += 1
2.1.3 Bloques Try/Except
Los bloques try
/except
son una parte fundamental de la programación en Python para el manejo de errores. Estos bloques permiten al programador anticipar y manejar errores que pueden ocurrir durante la ejecución de un script de Python. Al utilizar bloques try/except, un programador puede crear un programa más robusto y resistente a errores que puede manejar entradas inesperadas u otros errores sin bloquearse. De hecho, los bloques try/except son tan comúnmente utilizados en la programación en Python que a menudo se consideran un aspecto fundamental de la sintaxis y funcionalidad del lenguaje.
Ejemplo:
try:
x = 1 / 0 # This will raise a ZeroDivisionError
except ZeroDivisionError:
print('You cannot divide by zero!')
2.1.4 Funciones
Las funciones son un concepto clave en la programación que permiten la creación de piezas de código reutilizables. Cuando se define una función en Python, se utiliza la palabra clave def
. Las funciones pueden contener cualquier número de declaraciones, incluyendo bucles, declaraciones condicionales y otras funciones.
Además, las funciones pueden tener parámetros y valores de retorno, lo que permite una mayor flexibilidad en cómo se utilizan. Al dividir un problema en funciones más pequeñas, el código puede hacerse más legible y más fácil de mantener.
Las funciones son una herramienta esencial para cualquier programador que busque mejorar la eficiencia y efectividad de su código.
Ejemplo:
def greet(name):
return f'Hello, {name}!'
print(greet('Alice')) # 'Hello, Alice!'
2.1.5 Clases
La programación orientada a objetos se centra en el concepto de clases. Una clase es esencialmente un plano que describe las propiedades, métodos y comportamientos de los objetos que se crean a partir de ella.
Estos objetos pueden considerarse como instancias de la clase, cada uno con su propio conjunto único de valores para las propiedades definidas por la clase. Cuando creas un objeto a partir de una clase, esencialmente lo estás instanciando, lo que significa que estás creando una nueva instancia de la clase con su propio conjunto de valores.
Una vez que se ha creado un objeto, puedes llamar a sus métodos para realizar diversas tareas. Al definir estos métodos dentro de la clase, puedes asegurarte de que la misma funcionalidad esté disponible para todas las instancias de la clase.
Las clases proporcionan un mecanismo poderoso para organizar y gestionar código complejo, lo que te permite crear código reutilizable y modular que se puede compartir en múltiples proyectos.
Ejemplo:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
return f'Hello, my name is {self.name} and I am {self.age} years old.'
alice = Person('Alice', 25)
print(alice.greet()) # 'Hello, my name is Alice and I am 25 years old.'
2.1.6 Funciones y Módulos Incorporados
Python ofrece una amplia gama de funciones y módulos incorporados que brindan funcionalidad adicional al lenguaje. Estos módulos están diseñados para ser utilizados en una variedad de aplicaciones, desde análisis de datos hasta desarrollo web y más allá.
Por ejemplo, el módulo math
proporciona acceso a funciones matemáticas como la trigonometría, mientras que el módulo os
permite la interacción con el sistema operativo. La biblioteca estándar de Python incluye módulos para trabajar con expresiones regulares, entrada/salida de archivos y comunicación en red, por nombrar solo algunos.
Con tal variedad de herramientas a tu disposición, Python es un lenguaje poderoso que puede manejar una amplia gama de tareas y aplicaciones.
Aquí tienes algunas de las más comúnmente utilizadas:
Funciones Incorporadas
Python tiene muchas funciones incorporadas que realizan una variedad de tareas. Aquí tienes algunos ejemplos:
print()
: Imprime el mensaje especificado en la pantalla.len()
: Devuelve el número de elementos en un objeto.type()
: Devuelve el tipo de un objeto.str()
,int()
,float()
: Convierte un objeto en una cadena, entero o flotante, respectivamente.input()
: Lee una línea desde la entrada (teclado), la convierte en una cadena y la devuelve.
Así es como puedes usar estas funciones:
print(len('Hello, world!')) # 13
print(type(10)) # <class 'int'>
print(int('10')) # 10
name = input('What is your name? ')
Módulos Incorporados
Python también incluye un conjunto de módulos incorporados que puedes importar en tu programa para utilizar. Aquí tienes algunos ejemplos:
math
: Proporciona funciones matemáticas.random
: Proporciona funciones para generar números aleatorios.datetime
: Proporciona funciones para manipular fechas y horas.os
: Proporciona funciones para interactuar con el sistema operativo.
Así es como puedes usar estos módulos:
import math
print(math.sqrt(16)) # 4.0
import random
print(random.randint(1, 10)) # a random integer between 1 and 10
import datetime
print(datetime.datetime.now()) # current date and time
import os
print(os.getcwd()) # current working directory
Esto concluye nuestro curso rápido de Python. Si bien esta sección solo rasca la superficie de lo que Python puede hacer, debería proporcionarte una buena base sobre la que construir. En las próximas secciones, exploraremos algunas de las principales bibliotecas de Python utilizadas en Aprendizaje Automático.
Si deseas obtener una comprensión mejor y más profunda de los conceptos básicos de Python, este libro puede interesarte:

2.1 Curso Intensivo de Python
¡Bienvenido al Capítulo 2! Aquí, profundizaremos en el mundo de Python y sus bibliotecas esenciales que se utilizan ampliamente en el campo del Aprendizaje Automático. Como probablemente ya sepas, Python se ha convertido en el lenguaje preferido de muchos científicos de datos e ingenieros de aprendizaje automático debido a su simplicidad y a las amplias bibliotecas disponibles. La popularidad de Python se debe en gran parte a que es un lenguaje de programación de código abierto que es fácil de aprender y usar.
A lo largo de este capítulo, cubriremos una variedad de temas, desde los conceptos básicos de la programación en Python hasta las bibliotecas esenciales utilizadas en el Aprendizaje Automático. Comenzaremos discutiendo la sintaxis de Python y los tipos de datos, incluyendo variables, bucles, condiciones y funciones. A continuación, exploraremos algunas de las bibliotecas más esenciales utilizadas en el Aprendizaje Automático, como NumPy, Pandas y Matplotlib, y cómo se pueden usar para procesar, analizar y visualizar datos.
También discutiremos los conceptos básicos del Aprendizaje Automático, incluyendo el aprendizaje supervisado y no supervisado, y cómo implementarlos utilizando Python. Al final de este capítulo, tendrás una comprensión sólida de Python y sus principales bibliotecas, estableciendo una base sólida para el resto del libro.
Comencemos con un curso intensivo sobre Python.
Python es un lenguaje de programación de alto nivel, poderoso y versátil que se utiliza ampliamente en diversos campos, como el desarrollo web, el análisis de datos, la inteligencia artificial y más. Su simplicidad y legibilidad lo convierten en un gran lenguaje para principiantes, pero también puede manejar tareas complejas y proyectos a gran escala.
En esta sección, exploraremos los conceptos básicos de Python, discutiendo en detalle los tipos de datos, el flujo de control, las funciones y las clases. También exploraremos algunas de las aplicaciones prácticas de Python en diversas industrias, como finanzas, atención médica y educación. Al final de esta sección, tendrás una comprensión sólida de los fundamentos de Python y podrás construir programas simples por tu cuenta.
Es importante tener en cuenta que esta sección no pretende ser una guía completa de Python, sino más bien una visión general rápida para ayudarte a comenzar. Si ya estás familiarizado con Python, siéntete libre de leer rápidamente esta sección o pasar a la siguiente, donde exploraremos temas más avanzados en programación en Python.
2.1.1 Tipos de Datos
Python tiene varios tipos de datos incorporados, que incluyen enteros, números flotantes, cadenas, listas, tuplas, conjuntos y diccionarios. Aquí tienes un resumen rápido:
Enteros y Números Flotantes
Los enteros son un tipo de número que representan cantidades enteras, mientras que los números flotantes, o números de punto flotante, son un tipo de número que representan cantidades decimales. Ambos tipos de números se pueden utilizar en operaciones aritméticas básicas, como suma, resta, multiplicación y división.
Los enteros se pueden utilizar en operaciones de módulo, que encuentran el resto de una operación de división. Los números flotantes también se pueden utilizar en operaciones matemáticas más complejas, como funciones trigonométricas y logaritmos. Es importante tener en cuenta que al realizar operaciones aritméticas con enteros y números flotantes, el resultado será un número flotante.
Ejemplo:
# Integers
x = 10
y = 2
print(x + y) # Addition
print(x - y) # Subtraction
print(x * y) # Multiplication
print(x / y) # Division
# Floats
a = 1.5
b = 0.5
print(a + b)
print(a - b)
print(a * b)
print(a / b)
Propósito del Código:
Este fragmento de código demuestra cómo realizar operaciones aritméticas básicas con números enteros y de punto flotante en Python. Muestra el comportamiento de los operadores de adición, sustracción, multiplicación y división para ambos tipos de datos.
Desglose Paso a Paso:
- Aritmética con Enteros:
- El código asigna el valor entero
10
a la variablex
y2
a la variabley
. - Luego realiza las siguientes operaciones utilizando los operadores aritméticos:
print(x + y)
: Esto calcula la suma dex
yy
(que es 12) e imprime el resultado.print(x - y)
: Esto calcula la diferencia entrex
yy
(que es 8) e imprime el resultado.print(x * y)
: Esto calcula el producto dex
yy
(que es 20) e imprime el resultado.print(x / y)
: Esto realiza la división entera dex
pory
. Dado que ambos operandos son enteros, Python realiza la división entera por defecto, resultando en5.0
. Nota que el resultado es un flotante, aunque los operandos son enteros.
- El código asigna el valor entero
- Aritmética con Flotantes:
- El código asigna el valor de punto flotante
1.5
a la variablea
y0.5
a la variableb
. - De manera similar a la aritmética con enteros, realiza operaciones utilizando los mismos operadores e imprime los resultados:
print(a + b)
: Esto calcula la suma dea
yb
(que es 2.0) e imprime el resultado.print(a - b)
: Esto calcula la diferencia entrea
yb
(que es 1.0) e imprime el resultado.print(a * b)
: Esto calcula el producto dea
yb
(que es 0.75) e imprime el resultado.print(a / b)
: Esto realiza la división de punto flotante dea
porb
. Dado que al menos uno de los operandos es un flotante, Python realiza la división con precisión de punto flotante, resultando en3.0
.
- El código asigna el valor de punto flotante
Cadenas de Caracteres
Las cadenas de caracteres son secuencias de caracteres que se utilizan para representar texto en la programación. Se pueden crear encerrando caracteres entre comillas simples ('') o comillas dobles (""). Una vez creadas, las cadenas de caracteres se pueden manipular de varias maneras, como agregar nuevos caracteres a ellas o extraer caracteres específicos de ellas.
Las cadenas de caracteres se pueden formatear para incluir valores que cambian dinámicamente, como fechas o entrada del usuario. Esto permite programas más dinámicos e interactivos que pueden responder a la entrada del usuario en tiempo real. En general, las cadenas de caracteres son un concepto fundamental en la programación que permite la representación y manipulación de datos basados en texto.
Ejemplo:
s = 'Hello, world!'
print(s)
Listas
Las listas son una parte esencial de la programación, ya que permiten colecciones ordenadas de elementos. Las listas son mutables, lo que te permite hacer modificaciones en su contenido. Un ejemplo de una lista podría ser una lista de tareas pendientes que podrías usar para llevar un registro de las tareas que debes completar. Podrías agregar o quitar elementos de esta lista a medida que completes tareas o pienses en nuevas.
Además de las listas de tareas, las listas se pueden utilizar para muchos otros propósitos, como almacenar nombres y números de teléfono de empleados, una lista de tus libros favoritos o incluso una lista de países que te gustaría visitar algún día. Las listas también se pueden anidar unas dentro de otras para crear estructuras más complejas. Por ejemplo, una lista de listas de tareas pendientes se podría usar para categorizar tus tareas por tema o prioridad.
Las listas son una parte versátil e integral de la programación que se pueden utilizar de diversas formas para ayudar a organizar y gestionar datos.
Ejemplo:
# Create a list
fruits = ['apple', 'banana', 'cherry']
# Add an item to the list
fruits.append('date')
# Remove an item from the list
fruits.remove('banana')
# Access an item in the list
print(fruits[0]) # 'apple'
Propósito del Código:
Este fragmento de código demuestra cómo crear una lista en Python y realizar operaciones comunes de manipulación de listas, incluyendo agregar, eliminar y acceder a elementos.
Desglose Paso a Paso:
- Creación de una Lista:
- La línea
fruits = ['apple', 'banana', 'cherry']
crea una lista llamadafruits
. Las listas se utilizan para almacenar colecciones ordenadas de elementos en Python. En este caso, la listafruits
contiene tres elementos de tipo cadena: "apple", "banana" y "cherry".
- La línea
- Agregar un Elemento a la Lista (Append):
- La línea
fruits.append('date')
añade el elemento de cadena "date" al final de la listafruits
usando el método.append
. Las listas son mutables, lo que significa que su contenido puede cambiarse después de su creación. El método.append
es una forma conveniente de agregar nuevos elementos al final de una lista.
- La línea
- Eliminar un Elemento de la Lista (Remove):
- La línea
fruits.remove('banana')
elimina la primera aparición del elemento de cadena "banana" de la listafruits
utilizando el método.remove
. Es importante notar que el método.remove
elimina el elemento basado en su valor, no en su posición en la lista. Si el elemento no se encuentra, generará unValueError
.
- La línea
- Acceder a un Elemento en la Lista:
- La línea
print(fruits[0])
imprime el primer elemento de la listafruits
. Las listas se indexan comenzando desde 0, por lo quefruits[0]
se refiere al elemento en el índice 0, que es "apple" en este caso.
- La línea
Tuplas
Las tuplas y las listas son ambas estructuras de datos en Python. Aunque comparten similitudes, como la capacidad de almacenar múltiples valores en una sola variable, también existen diferencias clave. Una de las principales diferencias es que las tuplas son inmutables, lo que significa que una vez que se crea una tupla, no puedes cambiar su contenido. En contraste, las listas son mutables, lo que significa que puedes agregar, eliminar o modificar elementos después de que se crea la lista.
A pesar de su inmutabilidad, las tuplas todavía son útiles en una serie de escenarios. Por ejemplo, se utilizan comúnmente para almacenar valores relacionados juntos, como las coordenadas de un punto en el espacio. Las tuplas también se pueden usar como claves en diccionarios, ya que son hashables. Las tuplas se pueden utilizar para devolver múltiples valores desde una función, lo que las convierte en una herramienta útil para manejar datos complejos.
Si bien las tuplas pueden parecer limitadas debido a su inmutabilidad, ofrecen una serie de ventajas y casos de uso que las convierten en una herramienta valiosa en el conjunto de herramientas de cualquier programador de Python.
Ejemplo:
# Create a tuple
coordinates = (10.0, 20.0)
# Access an item in the tuple
print(coordinates[0]) # 10.0
Conjuntos
Los conjuntos son colecciones desordenadas de elementos únicos. Son útiles en varios escenarios de programación, como contar elementos únicos en una lista o verificar la membresía. Los conjuntos también se pueden combinar mediante operaciones matemáticas como unión, intersección y diferencia. En Python, los conjuntos se representan utilizando llaves y los elementos se separan por comas.
Una característica importante de los conjuntos es que no permiten duplicados. Esto significa que si se agrega un elemento a un conjunto que ya existe, no cambiará el conjunto. Además, los conjuntos son mutables, lo que significa que se pueden agregar o eliminar elementos del conjunto después de que se haya creado. En general, los conjuntos son una herramienta versátil e importante en la programación.
Ejemplo:
# Create a set
fruits = {'apple', 'banana', 'cherry', 'apple'}
# Add an item to the set
fruits.add('date')
# Remove an item from the set
fruits.remove('banana')
# Check if an item is in the set
print('apple' in fruits) # True
Diccionarios
Los diccionarios son estructuras de datos que contienen pares clave-valor, lo que permite búsquedas eficientes y almacenamiento de información. Estos pares pueden representar cualquier tipo de datos, como cadenas, números o incluso otros diccionarios. Además de la búsqueda y el almacenamiento, los diccionarios también se pueden utilizar para la manipulación y el análisis de datos.
Con la flexibilidad y versatilidad de los diccionarios, se han convertido en un elemento básico en muchos lenguajes de programación, utilizados en aplicaciones que van desde la gestión de bases de datos hasta el procesamiento del lenguaje natural.
Ejemplo:
# Create a dictionary
person = {'name': 'Alice', 'age': 25, 'city': 'New York'}
# Access a value in the dictionary
print(person['name']) # 'Alice'
# Change a value in the dictionary
person['age'] = 26
# Add a new key-value pair to the dictionary
person['job'] = 'Engineer'
# Remove a key-value pair from the dictionary
del person['city']
# Print the modified dictionary
print(person)
Propósito del Código:
Este fragmento de código demuestra cómo crear un diccionario en Python, acceder y modificar sus elementos, y realizar operaciones comunes como agregar y eliminar pares clave-valor.
Desglose Paso a Paso:
- Creación de un Diccionario:
- La línea
person = {'name': 'Alice', 'age': 25, 'city': 'New York'}
crea un diccionario llamadoperson
. Los diccionarios son estructuras de datos fundamentales en Python para almacenar colecciones de datos en un formato de clave-valor. En este caso, el diccionarioperson
almacena tres pares clave-valor:- Clave: 'name', Valor: 'Alice' (asocia el nombre "Alice" con la clave 'name')
- Clave: 'age', Valor: 25 (asocia la edad 25 con la clave 'age')
- Clave: 'city', Valor: 'New York' (asocia la ciudad "New York" con la clave 'city')
- La línea
- Acceso a un Valor en el Diccionario:
- La línea
print(person['name'])
recupera el valor asociado con la clave 'name' del diccionarioperson
y lo imprime. Dado que 'name' es una clave, recupera el valor correspondiente, que es "Alice" en este caso.
- La línea
- Cambio de un Valor en el Diccionario:
- La línea
person['age'] = 26
modifica el valor asociado con la clave 'age' en el diccionarioperson
. Los diccionarios son mutables, lo que significa que puedes cambiar su contenido después de su creación. Aquí, actualizamos la edad a 26.
- La línea
- Agregar un Nuevo Par Clave-Valor:
- La línea
person['job'] = 'Engineer'
añade un nuevo par clave-valor al diccionarioperson
. La clave es 'job', y el valor es 'Engineer'. Esto extiende el diccionario con nueva información.
- La línea
- Eliminación de un Par Clave-Valor:
- La línea
del person['city']
elimina el par clave-valor con la clave 'city' del diccionarioperson
. Se utiliza la palabra clavedel
para la eliminación.
- La línea
- Impresión del Diccionario Modificado:
- La línea
print(person)
imprime el contenido del diccionarioperson
modificado. Esto mostrará el diccionario actualizado sin el par clave-valor 'city' y con la edad cambiada.
- La línea
Puntos Clave:
- Los diccionarios son colecciones de pares clave-valor, proporcionando una manera flexible de almacenar y acceder a los datos.
- Creas diccionarios usando llaves
{}
con claves y valores separados por dos puntos (:
). Las claves deben ser únicas e inmutables (por ejemplo, cadenas, números). - El acceso a los elementos se realiza usando la clave dentro de corchetes
[]
. - Puedes modificar valores existentes o agregar nuevos pares clave-valor usando la asignación.
- La palabra clave
del
elimina pares clave-valor del diccionario.
2.1.2 Control de Flujo
El control de flujo es un concepto crucial en la programación. Se refiere al orden en que se ejecuta el código de un programa. En Python, existen varios mecanismos que se pueden utilizar para controlar el flujo de un programa.
Uno de estos es la declaración if
, que permite que el programa tome decisiones basadas en ciertas condiciones. Otro mecanismo importante es el bucle for
, que se utiliza para iterar sobre una secuencia de valores o elementos. Del mismo modo, el bucle while
se puede utilizar para ejecutar un bloque de código repetidamente siempre que se cumpla una cierta condición.
Además de estos mecanismos, Python también proporciona bloques try
/except
, que se utilizan para el manejo de errores. Estos bloques son particularmente útiles cuando un programa encuentra un error o una excepción que no puede manejar, ya que permiten que el programa se recupere de manera adecuada del error y continúe ejecutando su código.
Es importante que los programadores tengan una comprensión sólida del control de flujo y de los diferentes mecanismos que se pueden utilizar para controlarlo en Python. Al utilizar estos mecanismos de manera efectiva, los programadores pueden crear programas que sean eficientes y sólidos, y que puedan manejar una amplia variedad de escenarios y situaciones diferentes.
Declaraciones if
Las declaraciones if
se utilizan para la ejecución condicional, permitiendo que un programa tome decisiones basadas en ciertas condiciones. Esta es una herramienta poderosa que brinda a los desarrolladores un mayor control sobre el flujo de su código al permitirles especificar lo que debe ocurrir en circunstancias particulares.
Por ejemplo, una declaración if
podría utilizarse para verificar si un usuario ha ingresado la contraseña correcta y, si es así, otorgarles acceso a una zona restringida de un sitio web. Alternativamente, podría utilizarse para verificar si un usuario ha ingresado una entrada inválida y pedirles que lo intenten nuevamente.
Al utilizar las declaraciones if
, los desarrolladores pueden crear programas más dinámicos y versátiles que pueden responder a una variedad más amplia de entradas y condiciones por parte del usuario.
Ejemplo:
x = 10
if x > 0:
print('x is positive')
elif x < 0:
print('x is negative')
else:
print('x is zero')
Bucles for
Los bucles for
son una herramienta esencial en la programación. Se utilizan para iterar sobre una secuencia (como una lista o una cadena), lo que permite realizar operaciones en cada elemento de la secuencia. Esto es increíblemente útil en una amplia variedad de contextos.
Por ejemplo, imagine que tiene una lista de elementos y desea realizar el mismo cálculo en cada elemento. Un bucle for
hace que esta tarea sea simple y eficiente. Al iterar sobre la lista, el bucle realiza el cálculo en cada elemento sucesivamente, lo que le ahorra tener que escribir el mismo código una y otra vez.
Además de listas y cadenas, los bucles for
también se pueden utilizar con otros tipos de secuencias, como diccionarios y conjuntos, lo que los convierte en una herramienta increíblemente versátil que todo programador debería tener en su conjunto de herramientas.
Ejemplo:
fruits = ['apple', 'banana', 'cherry']
for fruit in fruits:
print(fruit)
Bucles while
Los bucles while
se utilizan para la ejecución repetida siempre que una condición sea verdadera. Esto significa que si la condición es falsa desde el principio, el bucle nunca se ejecutará. Es importante asegurarse de que la condición eventualmente se vuelva falsa, de lo contrario, el bucle continuará indefinidamente.
En la práctica, los bucles while
pueden ser útiles en situaciones en las que no se sabe cuántas iteraciones serán necesarias. Por ejemplo, si está escribiendo un programa para calcular la raíz cuadrada de un número, es posible que no sepa cuántas iteraciones serán necesarias hasta que obtenga el nivel deseado de precisión.
Otro uso de los bucles while
es preguntar repetidamente al usuario por información hasta que proporcione una entrada válida. Esto puede ser útil para asegurarse de que el programa no se bloquee o se comporte de manera inesperada debido a la entrada inválida del usuario.
En general, los bucles while
son una poderosa construcción de programación que se puede utilizar para resolver una amplia variedad de problemas. Al usarlos de manera efectiva, puede escribir código que sea más eficiente, más fácil de leer y más fácil de mantener.
Ejemplo:
x = 0
while x < 5:
print(x)
x += 1
2.1.3 Bloques Try/Except
Los bloques try
/except
son una parte fundamental de la programación en Python para el manejo de errores. Estos bloques permiten al programador anticipar y manejar errores que pueden ocurrir durante la ejecución de un script de Python. Al utilizar bloques try/except, un programador puede crear un programa más robusto y resistente a errores que puede manejar entradas inesperadas u otros errores sin bloquearse. De hecho, los bloques try/except son tan comúnmente utilizados en la programación en Python que a menudo se consideran un aspecto fundamental de la sintaxis y funcionalidad del lenguaje.
Ejemplo:
try:
x = 1 / 0 # This will raise a ZeroDivisionError
except ZeroDivisionError:
print('You cannot divide by zero!')
2.1.4 Funciones
Las funciones son un concepto clave en la programación que permiten la creación de piezas de código reutilizables. Cuando se define una función en Python, se utiliza la palabra clave def
. Las funciones pueden contener cualquier número de declaraciones, incluyendo bucles, declaraciones condicionales y otras funciones.
Además, las funciones pueden tener parámetros y valores de retorno, lo que permite una mayor flexibilidad en cómo se utilizan. Al dividir un problema en funciones más pequeñas, el código puede hacerse más legible y más fácil de mantener.
Las funciones son una herramienta esencial para cualquier programador que busque mejorar la eficiencia y efectividad de su código.
Ejemplo:
def greet(name):
return f'Hello, {name}!'
print(greet('Alice')) # 'Hello, Alice!'
2.1.5 Clases
La programación orientada a objetos se centra en el concepto de clases. Una clase es esencialmente un plano que describe las propiedades, métodos y comportamientos de los objetos que se crean a partir de ella.
Estos objetos pueden considerarse como instancias de la clase, cada uno con su propio conjunto único de valores para las propiedades definidas por la clase. Cuando creas un objeto a partir de una clase, esencialmente lo estás instanciando, lo que significa que estás creando una nueva instancia de la clase con su propio conjunto de valores.
Una vez que se ha creado un objeto, puedes llamar a sus métodos para realizar diversas tareas. Al definir estos métodos dentro de la clase, puedes asegurarte de que la misma funcionalidad esté disponible para todas las instancias de la clase.
Las clases proporcionan un mecanismo poderoso para organizar y gestionar código complejo, lo que te permite crear código reutilizable y modular que se puede compartir en múltiples proyectos.
Ejemplo:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
return f'Hello, my name is {self.name} and I am {self.age} years old.'
alice = Person('Alice', 25)
print(alice.greet()) # 'Hello, my name is Alice and I am 25 years old.'
2.1.6 Funciones y Módulos Incorporados
Python ofrece una amplia gama de funciones y módulos incorporados que brindan funcionalidad adicional al lenguaje. Estos módulos están diseñados para ser utilizados en una variedad de aplicaciones, desde análisis de datos hasta desarrollo web y más allá.
Por ejemplo, el módulo math
proporciona acceso a funciones matemáticas como la trigonometría, mientras que el módulo os
permite la interacción con el sistema operativo. La biblioteca estándar de Python incluye módulos para trabajar con expresiones regulares, entrada/salida de archivos y comunicación en red, por nombrar solo algunos.
Con tal variedad de herramientas a tu disposición, Python es un lenguaje poderoso que puede manejar una amplia gama de tareas y aplicaciones.
Aquí tienes algunas de las más comúnmente utilizadas:
Funciones Incorporadas
Python tiene muchas funciones incorporadas que realizan una variedad de tareas. Aquí tienes algunos ejemplos:
print()
: Imprime el mensaje especificado en la pantalla.len()
: Devuelve el número de elementos en un objeto.type()
: Devuelve el tipo de un objeto.str()
,int()
,float()
: Convierte un objeto en una cadena, entero o flotante, respectivamente.input()
: Lee una línea desde la entrada (teclado), la convierte en una cadena y la devuelve.
Así es como puedes usar estas funciones:
print(len('Hello, world!')) # 13
print(type(10)) # <class 'int'>
print(int('10')) # 10
name = input('What is your name? ')
Módulos Incorporados
Python también incluye un conjunto de módulos incorporados que puedes importar en tu programa para utilizar. Aquí tienes algunos ejemplos:
math
: Proporciona funciones matemáticas.random
: Proporciona funciones para generar números aleatorios.datetime
: Proporciona funciones para manipular fechas y horas.os
: Proporciona funciones para interactuar con el sistema operativo.
Así es como puedes usar estos módulos:
import math
print(math.sqrt(16)) # 4.0
import random
print(random.randint(1, 10)) # a random integer between 1 and 10
import datetime
print(datetime.datetime.now()) # current date and time
import os
print(os.getcwd()) # current working directory
Esto concluye nuestro curso rápido de Python. Si bien esta sección solo rasca la superficie de lo que Python puede hacer, debería proporcionarte una buena base sobre la que construir. En las próximas secciones, exploraremos algunas de las principales bibliotecas de Python utilizadas en Aprendizaje Automático.
Si deseas obtener una comprensión mejor y más profunda de los conceptos básicos de Python, este libro puede interesarte:
