En esta página podrás encontrar todo el material utilizando durante el curso para su consulta perpetua. Se irán adjuntando presentaciones, fragmentos de código de cada ejercicio, los datasets utilizados así como las ligas de referencia para cada sesión.
https://colab.research.google.com/drive/1zi8UK1JGQSmIhWK4PK_75zefxchNMh3H?usp=sharing
Escribe una función llamada clasificar_numeros que tome una lista de números como argumento. La función debería iterar a través de la lista, e imprimir si cada número es 'par' o 'impar'. Utiliza un bucle for para iterar sobre la lista y una declaración if para determinar la paridad del número.
Crea una función llamada calcular_promedio que acepte una lista de calificaciones (números) y devuelva el promedio. Dentro de la función, utiliza un bucle for para sumar todas las calificaciones y luego divide este total por el número de calificaciones para obtener el promedio. Después de calcular el promedio, utiliza declaraciones if, elif y else para imprimir si el promedio es 'excelente' (90 o más), 'bueno' (entre 70 y 89), 'suficiente' (entre 50 y 69) o 'insuficiente' (menos de 50).
Escribe una función llamada encontrar_multiplos que acepte dos argumentos: un número base n y un límite limite. La función debe imprimir todos los múltiplos de n que sean menores o iguales a limite. Utiliza un bucle for para iterar a través de un rango de números y una declaración if para verificar si son múltiplos de n.
Drive para guardar propuestas | Se debe de subir el script (puede ser en un block de notas) con su nombre:
https://drive.google.com/drive/folders/1ObLERYR_d-tn1oIIiTB8PcWPvObH5tP_?usp=sharing
Python es un lenguaje de programación interpretado, de alto nivel y con una semántica dinámica. Fue creado por Guido van Rossum y lanzado en 1991. Python soporta múltiples paradigmas de programación, incluidos el procedimental, el orientado a objetos y el funcional. Debido a su sintaxis clara y legible, Python es un excelente lenguaje para principiantes, al mismo tiempo que es potente y versátil para profesionales experimentados.
Desarrollo web: Frameworks como Django y Flask permiten la creación de sitios web complejos de manera eficiente.
Ciencia de datos y Machine Learning: Herramientas como Pandas, NumPy y Scikit-learn facilitan el análisis de datos y la construcción de modelos de machine learning.
Automatización: Python puede automatizar tareas repetitivas y sistemas de procesamiento de datos.
Desarrollo de juegos: Librerías como Pygame permiten la creación de juegos básicos.
Aplicaciones de escritorio: Tkinter y PyQt permiten desarrollar interfaces de usuario gráficas (GUI).
Notas: La versatilidad de Python ha llevado a su adopción en casi todos los sectores de la industria y la academia. Su comunidad activa y el vasto ecosistema de paquetes de terceros facilitan encontrar soporte y recursos de aprendizaje.
Tips: Explora proyectos en GitHub o plataformas similares para ver cómo se utiliza Python en diferentes campos.
Python es conocido por su enfoque en la legibilidad del código y su sintaxis sencilla, que permite a los programadores expresar conceptos en menos líneas de código en comparación con otros lenguajes. Los conceptos fundamentales incluyen:
Variables: Contenedores para almacenar datos que pueden ser modificados.
Tipos de datos: Clasificaciones de datos que le dicen a Python cómo el programador pretende usarlos (por ejemplo, enteros, flotantes, cadenas).
Operadores: Símbolos que realizan operaciones en variables y valores.
Estructuras de control: Instrucciones que cambian el flujo de ejecución del programa (por ejemplo, if, for, while).
Notas: Comprender estos conceptos es crucial para cualquier tarea de programación en Python, desde scripts simples hasta aplicaciones complejas.
Tips: Practica escribiendo código para familiarizarte con la sintaxis y los conceptos básicos de Python.
Un ambiente de desarrollo para Python puede ser tan simple como un editor de texto y la terminal o tan complejo como un IDE completo. Los editores de texto como Sublime Text, Atom y Visual Studio Code son populares entre los desarrolladores de Python debido a su ligereza y flexibilidad. Los IDE como PyCharm y Spyder ofrecen funcionalidades adicionales específicas para Python, como depuración, pruebas y organización de proyectos.
Notas: La elección entre un editor de texto y un IDE puede depender de la preferencia personal, así como de la escala y complejidad del proyecto.
Tips: Si estás comenzando, intenta usar un editor de texto simple para familiarizarte con la sintaxis de Python antes de pasar a un IDE más complejo.
Las estructuras de datos en Python permiten almacenar, organizar y manejar datos de manera eficiente. Incluyen:
Listas: Colecciones ordenadas y mutables de elementos.
Tuplas: Colecciones ordenadas e inmutables de elementos.
Diccionarios: Colecciones no ordenadas de pares clave-valor.
Sets: Colecciones no ordenadas de elementos únicos.
Cada estructura tiene su propia utilidad y métodos específicos para manipular los datos que contienen.
Notas: Elegir la estructura de datos adecuada es clave para optimizar la eficiencia y la claridad del código.
Tips: Usa listas cuando necesites una colección que pueda cambiar. Usa tuplas cuando necesites asegurar que los datos no cambien. Usa diccionarios cuando necesites asociar pares de información. Usa sets cuando necesites garantizar la unicidad de los elementos.
Las variables en Python son identificadores que se utilizan para almacenar valores de datos que pueden cambiar durante la ejecución del programa. En Python, las variables no necesitan ser declaradas ni definidas de antemano. Por otro lado, una constante es un tipo de variable cuyo valor no se supone que cambie a lo largo de la ejecución del programa.
# Definición de una variable
contador = 10 # Inicialmente establecida en 10
contador += 5 # Incrementamos el valor de la variable en 5
print(contador) # Debería imprimir 15
# Definición de una constante
PI = 3.14159 # Por convención, las constantes se nombran en mayúsculas
print(PI)
Notas: Python técnicamente no tiene constantes, pero usar mayúsculas para nombrar una variable es una convención que ayuda a indicar que el valor no debería cambiar.
Tips: Si bien Python no impide cambiar el valor de lo que consideramos una 'constante', es buena práctica no modificar estos valores una vez definidos.
Listas: Las listas son estructuras de datos mutables que pueden contener una combinación de diferentes tipos de datos. Son ideales para almacenar colecciones de elementos, especialmente cuando el número de elementos es desconocido o cuando los elementos pueden cambiar.
# Ejemplo 1: Crear y modificar una lista
numeros = [1, 2, 3, 4, 5]
numeros.append(6) # Agrega el número 6 al final de la lista
numeros.insert(0, 0) # Inserta el número 0 al principio de la lista
print(numeros)
# Ejemplo 2: Acceder y rebanar elementos de una lista
primeros_tres = numeros[:3] # Obtiene los primeros tres elementos
ultimos_dos = numeros[-2:] # Obtiene los últimos dos elementos
print(primeros_tres, ultimos_dos)
# Ejemplo 3: Combinar listas y comprensiones de listas
pares = [n for n in numeros if n % 2 == 0] # Crea una lista de números pares
print(pares)
Tuplas: Las tuplas son estructuras de datos inmutables, lo que significa que una vez definidas, sus elementos no pueden ser modificados. Son ideales para almacenar colecciones de elementos que no deben cambiar, como las constantes de un programa.
# Ejemplo 1: Crear y usar una tupla
dimensiones = (20, 30, 40)
longitud, ancho, altura = dimensiones # Desempaquetado de una tupla
print("Las dimensiones son:", longitud, "x", ancho, "x", altura)
# Ejemplo 2: Tuplas y bucles
for dimension in dimensiones:
print("Una dimensión:", dimension)
Diccionarios: Los diccionarios son colecciones no ordenadas de pares clave-valor. A diferencia de las listas y tuplas, que se indexan por un rango numérico, los diccionarios se indexan por claves únicas, lo que los hace ideales para representar relaciones de tipo asociativo.
# Ejemplo 1: Crear y modificar un diccionario
persona = {"nombre": "Luis", "edad": 25}
persona["profesión"] = "Ingeniero" # Agrega un nuevo par clave-valor
print(persona)
# Ejemplo 2: Acceder y manejar elementos de un diccionario
print("Nombre:", persona["nombre"]) # Accede al valor asociado a la clave "nombre"
edad = persona.get("edad", "Edad no especificada") # Uso de get para evitar KeyError
print("Edad:", edad)
# Ejemplo 3: Iterar sobre un diccionario
for clave, valor in persona.items():
print(f"{clave}: {valor}")
Notas: Selecciona la estructura de datos que mejor se adapte a las necesidades de tu programa.
Tips: Utiliza listas para colecciones de elementos modificables, tuplas para colecciones inmodificables y diccionarios para asociar pares de información clave-valor.
Las comprensiones de listas ofrecen una sintaxis concisa para crear listas a partir de otras listas. Cada nueva lista creada puede consistir en elementos resultantes de operaciones aplicadas a cada miembro de la lista original, filtrados bajo una condición determinada.
# Ejemplo 1: Crear una lista de cuadrados de números del 1 al 10
cuadrados = [x ** 2 for x in range(1, 11)]
print("Cuadrados:", cuadrados)
# Ejemplo 2: Filtrar la lista para incluir solo los cuadrados pares
cuadrados_pares = [x for x in cuadrados if x % 2 == 0]
print("Cuadrados pares:", cuadrados_pares)
# Ejemplo 3: Crear una lista de tuplas (número, cuadrado) para números del 1 al 5
cuadrados_tuplas = [(x, x ** 2) for x in range(1, 6)]
print("Lista de tuplas:", cuadrados_tuplas)
Notas: Las comprensiones de listas pueden hacer tu código más legible y eficiente.
Tips: Utiliza comprensiones de listas para transformar y filtrar datos de manera concisa.
Manejo de Strings: Los strings en Python son secuencias de caracteres utilizadas para almacenar y representar información basada en texto. Python ofrece una amplia variedad de operaciones y métodos para manipular strings, incluyendo concatenación, división, sustitución y formateo.
# Ejemplo 1: Concatenación y capitalización
saludo = "hola"
nombre = "Mundo"
mensaje = saludo.capitalize() + ", " + nombre.capitalize() + "!"
print(mensaje)
# Ejemplo 2: Formateo de strings con f-strings
usuario = "Ana"
edad = 25
presentacion = f"Mi nombre es {usuario} y tengo {edad} años."
print(presentacion)
# Ejemplo 3: Manipulación de strings
frase = " aprendiendo Python "
print(frase.strip().upper()) # Elimina espacios en blanco y convierte a mayúsculas
Manejo de Archivos: El manejo de archivos en Python permite leer y escribir datos en archivos externos. Esto es útil para una variedad de aplicaciones como el almacenamiento de datos, la configuración de programas y el procesamiento de archivos de texto o binarios.
# Ejemplo 1: Escribir en un archivo
with open('mensaje.txt', 'w') as archivo:
archivo.write("Hola, mundo de archivos!")
# Ejemplo 2: Leer de un archivo
with open('mensaje.txt', 'r') as archivo:
contenido = archivo.read()
print(contenido)
# Ejemplo 3: Leer líneas de un archivo en una lista
with open('mensaje.txt', 'r') as archivo:
lineas = archivo.readlines()
print(lineas)
Notas: Es importante cerrar los archivos después de trabajar con ellos para liberar recursos. La declaración with gestiona esto automáticamente.
Tips: Utiliza la modalidad 'a' (append) en vez de 'w' (write) si deseas agregar contenido al final de un archivo existente sin sobrescribirlo.
Las estructuras de decisión permiten al programa tomar decisiones y ejecutar diferentes bloques de código según se cumplan o no determinadas condiciones.
# Ejemplo 1: Uso simple de if
edad = 20
if edad >= 18:
print("Eres mayor de edad.")
# Ejemplo 2: Uso de if-else
if edad < 18:
print("Eres menor de edad.")
else:
print("Eres mayor de edad.")
# Ejemplo 3: Uso de if-elif-else
if edad < 18:
print("Eres menor de edad.")
elif edad >= 65:
print("Eres de la tercera edad.")
else:
print("Eres adulto.")
Las estructuras de iteración permiten ejecutar un bloque de código repetidas veces, generalmente con alguna variación en cada repetición.
# Ejemplo 1: Bucle for con una lista
frutas = ["manzana", "banana", "cereza"]
for fruta in frutas:
print("Fruta:", fruta)
# Ejemplo 2: Bucle for con range
for numero in range(1, 6):
print("Número:", numero)
# Ejemplo 3: Bucle while
contador = 5
while contador > 0:
print("Contador:", contador)
contador -= 1
Notas: Los bucles for son ideales para iterar sobre una secuencia. Los bucles while son más adecuados para repetir un bloque de código hasta que una condición deja de ser verdadera.
Tips: Utiliza la función range() para generar secuencias de números en bucles for. Asegúrate de que los bucles while tengan una condición de terminación clara para evitar bucles infinitos.
Las funciones en Python son bloques de código definidos que realizan una tarea específica y pueden retornar un valor. Permiten segmentar el código en unidades manejables y reutilizables, lo que facilita la lectura, mantenimiento y prueba del código.
# Ejemplo 1: Definición y llamada de una función simple
def saludar():
return "Hola, mundo!"
print(saludar())
# Ejemplo 2: Función con parámetros y retorno
def suma(a, b):
return a + b
resultado = suma(5, 3)
print("La suma es:", resultado)
# Ejemplo 3: Función con valores predeterminados para parámetros
def presentarse(nombre, edad=18):
return f"Mi nombre es {nombre} y tengo {edad} años."
print(presentarse("Ana")) # Usa la edad predeterminada
print(presentarse("Luis", 25)) # Proporciona un valor específico para la edad
Notas: Al definir funciones, usa nombres descriptivos y una cantidad adecuada de parámetros. Esto hace que el código sea más claro y fácil de entender.
Tips: Utiliza valores predeterminados en los parámetros de las funciones para proporcionar flexibilidad y evitar errores si no se pasan todos los argumentos durante la llamada.
Los módulos en Python son archivos que contienen definiciones de funciones, variables y clases que se pueden incluir en otros programas de Python. Permiten organizar el código de manera lógica, promoviendo la reutilización y la modularidad.
# Ejemplo 1: Importar un módulo completo
import math
print("El valor de pi es:", math.pi)
# Ejemplo 2: Importar elementos específicos de un módulo
from math import sqrt
print("La raíz cuadrada de 16 es:", sqrt(16))
# Ejemplo 3: Uso de alias en la importación de módulos
import datetime as dt
hoy = dt.date.today()
print("La fecha de hoy es:", hoy)
Notas: Al importar módulos, puedes elegir importar el módulo completo, solo ciertas funciones, o usar alias para simplificar la referencia en tu código.
Tips: Importa solo las partes necesarias de un módulo para mantener tu programa ligero y más fácil de entender. Utiliza alias para evitar conflictos de nombres o para acortar referencias largas.
# Importamos el módulo necesario para manejar expresiones regulares
import re
# Definimos funciones para limpiar y formatear los datos
def limpiar_texto(texto):
"""Normaliza el texto: elimina espacios adicionales y corrige mayúsculas/minúsculas."""
texto = texto.strip().title().replace(" De La ", " De La ")
return re.sub(' +', ' ', texto) # Elimina múltiples espacios consecutivos
def convertir_poblacion(poblacion_str):
"""Convierte el string de población a un número entero."""
return int(poblacion_str.replace(',', '')) # Elimina comas y convierte a entero
def convertir_tasa_alfabetizacion(tasa_str):
"""Convierte el string de tasa de alfabetización a un número flotante."""
return float(tasa_str.strip('%')) # Elimina el símbolo '%' y convierte a flotante
# Leemos los datos del archivo
datos_municipios = {}
with open('datos_municipios.txt', 'r') as archivo:
for linea in archivo:
municipio, poblacion, tasa_alfabetizacion = [dato.strip() for dato in linea.split(',')]
municipio = limpiar_texto(municipio)
poblacion = convertir_poblacion(poblacion)
tasa_alfabetizacion = convertir_tasa_alfabetizacion(tasa_alfabetizacion)
datos_municipios[municipio] = (poblacion, tasa_alfabetizacion)
# Calculamos la población total y la media de la tasa de alfabetización
poblacion_total = sum(datos[municipio][0] for municipio in datos_municipios)
tasa_media = sum(datos[municipio][1] for municipio in datos_municipios) / len(datos_municipios)
# Imprimimos los resultados
print("Resumen de Datos Sociodemográficos de Municipios de Hidalgo:")
for municipio, (poblacion, tasa) in datos_municipios.items():
print(f"{municipio}: Población = {poblacion}, Tasa de Alfabetización = {tasa}%")
print(f"Población Total: {poblacion_total}")
print(f"Tasa de Alfabetización Media: {tasa_media:.2f}%")
En este script combinado, hemos hecho lo siguiente:
Usamos funciones para separar la lógica de limpieza y conversión de datos, lo que hace que el código sea más modular y fácil de leer.
Los datos de cada municipio se almacenan en un diccionario datos_municipios, donde la clave es el nombre del municipio y el valor es una tupla que contiene la población y la tasa de alfabetización.
Implementamos comprensiones de listas para calcular la población total y la tasa media de alfabetización de una manera concisa y eficiente.
Se ha mejorado la legibilidad y mantenibilidad del código mediante el uso de buenas prácticas como la definición de funciones y el manejo de estructuras de datos de Python.
Este ejemplo demuestra cómo puedes aplicar los conceptos aprendidos en la Unidad 1 para desarrollar un programa funcional que realiza una tarea específica de automatización de datos.