para pensadores

Taller diseñado con el corazón de un docente y la mente de un programador

Python: Manejo de listas y tuplas

Objetivo de aprendizaje

Dominar la creación, manipulación y aplicación de listas y tuplas en Python para resolver problemas computacionales reales, desarrollando competencias técnicas en estructuras de datos, habilidades cognitivas de análisis y síntesis, y actitudes de curiosidad, precisión y pensamiento lógico, con el fin de construir soluciones eficientes y elegantes que aborden desafíos cotidianos mediante la programación.

Contextualización

Imagina que tienes en tus manos un canasto vacío. Cada vez que vas al mercado, lo llenas con frutas diferentes: manzanas, plátanos, uvas. Ese canasto es como una lista en Python: flexible, modificable, capaz de crecer y cambiar según lo necesites. Ahora piensa en las coordenadas de tu casa: latitud y longitud. Esos dos valores siempre irán juntos, inmutables, definiendo un lugar único en el mundo. Así son las tuplas: estructuras fijas que protegen lo esencial.

En nuestra vida digital, las listas y tuplas están en todas partes: desde la lista de amigos en redes sociales hasta las coordenadas de un mapa interactivo. Comprender su naturaleza te permitirá no solo escribir código, sino diseñar soluciones con conciencia de qué estructura elegir según el problema a resolver. Este conocimiento es el puente entre la teoría abstracta y el poder real de transformar datos en conocimiento.

Desarrollo de la actividad

Las listas en Python son como contenedores dinámicos que puedes modificar: agregar, eliminar o cambiar elementos. Son mutables y versátiles. Las tuplas, en cambio, son secuencias inmutables: una vez creadas, no puedes alterar su contenido, lo que las hace ideales para datos que no deben cambiar.

Listas: creación y manipulación
# Crear una lista de materias
materias = ["Matemáticas", "Física", "Historia", "Programación"]
print("Materias iniciales:", materias)

# Agregar una nueva materia
materias.append("Biología")
print("Después de agregar Biología:", materias)

# Insertar en una posición específica
materias.insert(2, "Química")
print("Después de insertar Química en posición 2:", materias)

# Eliminar un elemento
materias.remove("Historia")
print("Después de eliminar Historia:", materias)

# Acceder a elementos
print("Primera materia:", materias[0])
print("Última materia:", materias[-1])
Tuplas: estructuras inmutables
# Crear una tupla con coordenadas de ciudades de Ecuador
quito = (-0.1807, -78.4678)
guayaquil = (-2.1962, -79.8862)
cuenca = (-2.9006, -79.0045)

print("Coordenadas de Quito:", quito)
print("Latitud de Guayaquil:", guayaquil[0])
print("Longitud de Guayaquil:", guayaquil[1])

# Las tuplas no se pueden modificar después de creadas
# Esto causaría un error: quito[0] = 1.0

# Tuplas útiles para retornar múltiples valores
def calcular_promedio_y_maximo(calificaciones):
    promedio = sum(calificaciones) / len(calificaciones)
    maximo = max(calificaciones)
    return (promedio, maximo)

resultados = calcular_promedio_y_maximo([85, 92, 78, 90, 88])
print(f"Promedio: {resultados[0]}, Máximo: {resultados[1]}")
Conversión entre listas y tuplas
# De lista a tupla
lista_frutas = ["manzana", "banana", "naranja"]
tupla_frutas = tuple(lista_frutas)
print("Tupla de frutas:", tupla_frutas)

# De tupla a lista
coordenadas_tupla = (40.7128, -74.0060)  # Nueva York
coordenadas_lista = list(coordenadas_tupla)
print("Lista de coordenadas:", coordenadas_lista)

# ¿Por qué convertir?
# 1. Proteger datos: lista → tupla (inmutable)
# 2. Modificar datos: tupla → lista (mutable)

datos_sensibles = ["usuario", "contraseña", "email"]
protegidos = tuple(datos_sensibles)
print("Datos protegidos (inmutables):", protegidos)

Reflexión: ¿Cuándo usarías una lista y cuándo una tupla en una aplicación para gestionar las notas de tus materias? ¿Y en un sistema de geolocalización de sitios turísticos del Ecuador?

El reto final

Sistema de gestión de calificaciones del bachillerato

Eres el desarrollador de un sistema para gestionar las calificaciones del bachillerato en una institución educativa ecuatoriana. Tu tarea es crear un programa en Python que:

  1. Almacene en una lista de tuplas la información de 5 estudiantes, donde cada tupla contenga: (nombre, cedula, lista_de_calificaciones).
  2. Calcule para cada estudiante: promedio de calificaciones, calificación más alta y más baja.
  3. Determine cuál estudiante tiene el promedio más alto y cuál el más bajo.
  4. Muestre un informe ordenado alfabéticamente por nombre de estudiante.
  5. Permita al usuario buscar un estudiante por cédula y mostrar sus resultados.

Pistas: Utiliza una lista principal que contenga tuplas. Cada tupla tendrá elementos de diferentes tipos (strings, números, lista). Investiga sobre las funciones sorted(), max(), min() y el método .sort() para listas.

Evaluación lúdica

Pon a prueba lo aprendido con este juego de preguntas. Cada respuesta correcta suma 10 puntos. ¡Intenta conseguir el puntaje máximo!

Puntaje: 0/50