Python para pensadores

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

Python: Manejo de diccionarios y conjuntos

Objetivo de aprendizaje

Dominar la creación, manipulación y aplicación de diccionarios y conjuntos en Python para organizar y procesar información de manera eficiente, desarrollando habilidades de pensamiento lógico y estructurado que permitan resolver problemas complejos mediante la representación adecuada de datos, cultivando una actitud curiosa y metódica frente a la programación como herramienta para modelar y transformar la realidad.

Contextualización

Imagina que eres el organizador de un festival de música ecuatoriano. Tienes cientos de artistas, escenarios, horarios y asistentes. ¿Cómo llevarías el control de quién toca dónde y a qué hora? ¿Cómo sabrías si un asistente ya compró entrada o si un artista ya fue asignado a un escenario?

En la vida cotidiana, constantemente necesitamos organizar información: los contactos de tu teléfono (nombre, número, email), tu colección de videojuegos (título, plataforma, horas jugadas), o incluso tus amigos en redes sociales. Python te ofrece herramientas poderosas para este propósito: los diccionarios, que relacionan "claves" con "valores" como un directorio telefónico, y los conjuntos, que son como bolsas donde cada elemento es único y el orden no importa.

Hoy no solo aprenderás sintaxis, sino que descubrirás cómo estas estructuras pueden ayudarte a pensar de manera más clara y resolver problemas más eficientemente.

Desarrollo de la actividad

Vamos a explorar los diccionarios y conjuntos a través de ejemplos prácticos relacionados con situaciones reales que podrías encontrar en tu entorno.

Diccionarios: Tu agenda personalizada

Un diccionario en Python es como un diccionario real: buscas una palabra (clave) y encuentras su significado (valor). Veamos cómo funciona:

# Creando un diccionario de información personal
estudiante = {
    "nombre": "Ana",
    "edad": 17,
    "ciudad": "Quito",
    "materia_favorita": "Matemáticas",
    "hobbies": ["leer", "programar", "senderismo"]
}

# Accediendo a los valores por su clave
print("Nombre:", estudiante["nombre"])
print("Ciudad:", estudiante.get("ciudad", "No especificada"))

# Modificando un valor
estudiante["edad"] = 18
print("Nueva edad:", estudiante["edad"])

# Añadiendo una nueva clave-valor
estudiante["colegio"] = "Unidad Educativa XYZ"

# Recorriendo el diccionario
for clave, valor in estudiante.items():
    print(f"{clave}: {valor}")

Conjuntos: Eliminando duplicados

Los conjuntos son perfectos cuando necesitas trabajar con elementos únicos. Imagina que estás organizando los participantes de un torneo de videojuegos:

# Lista de participantes con duplicados
participantes = ["María", "Carlos", "Ana", "María", "Luis", "Carlos", "Ana"]
print("Lista original:", participantes)
print("Tamaño (con duplicados):", len(participantes))

# Convertir a conjunto para eliminar duplicados
participantes_unicos = set(participantes)
print("Conjunto de participantes:", participantes_unicos)
print("Tamaño (sin duplicados):", len(participantes_unicos))

# Operaciones con conjuntos
equipo_a = {"Ana", "Carlos", "Diana"}
equipo_b = {"Carlos", "Luis", "Elena"}

print("Jugadores en ambos equipos:", equipo_a & equipo_b) # Intersección
print("Todos los jugadores:", equipo_a | equipo_b) # Unión
print("Solo en equipo A:", equipo_a - equipo_b) # Diferencia

Reflexiona: ¿En qué situaciones de tu vida podrías usar diccionarios? ¿Y conjuntos? Piensa en aplicaciones reales como organizar tu música, gestionar contactos o analizar datos de redes sociales.

El reto final

Eres el organizador de la "Feria de Ciencias Intercolegial Ecuador 2024". Debes desarrollar un programa en Python que gestione la información del evento usando diccionarios y conjuntos.

Tareas a realizar:

  1. Crea un diccionario que almacene la información de cada proyecto participante con las siguientes claves: "id", "nombre", "colegio", "categoría", "integrantes", "puntaje".
  2. Implementa funciones para:
    • Agregar nuevos proyectos
    • Buscar proyectos por colegio o categoría
    • Actualizar el puntaje de un proyecto
    • Mostrar los 3 proyectos con mayor puntaje
  3. Usa conjuntos para:
    • Llevar control de los colegios participantes (sin duplicados)
    • Identificar estudiantes que participan en más de un proyecto
    • Encontrar categorías que tienen menos de 2 proyectos
  4. Genera un informe final que muestre:
    • Total de proyectos por categoría
    • Colegios participantes
    • Proyectos ganadores por categoría

Extensión creativa: Si quieres ir más allá, agrega una función que simule el proceso de evaluación aleatoria de proyectos y luego organice los resultados.

Evaluación lúdica

¡Pon a prueba lo aprendido con este juego interactivo! Responde las 5 preguntas sobre diccionarios y conjuntos en Python. Cada respuesta correcta te dará 20 puntos. ¡Intenta alcanzar los 100 puntos!

Puntaje: 0/100