1.
El Censo del Padawan (Listas)
# Lista para guardar a los futuros maestros Jedi
padawans = []
print("--- Registro de Padawans ---")
print("Introduce el nombre de 5 compañeros para el entrenamiento:")
# Usamos un ciclo sencillo para no repetir código 5 veces
for i in range(5):
# El f-string ayuda a que el usuario sepa por cuál número va
nombre = input(f"{i+1}. Nombre del compañero: ")
[Link](nombre)
# Los ordenamos alfabéticamente (el método sort lo hace ahí mismo)
[Link]()
print("\n--- Lista de Padawans ordenada ---")
# Un toque final para que la lista se vea limpia al imprimirla
for padawan in padawans:
print(f"• {padawan}")
2. La Bóveda de Seguridad (Tuplas)
# Definimos la tupla con los servidores del proyecto
# Recordar: las tuplas son inmutables (no cambian)
servidores = ("Auth", "DB", "Storage", "API")
print("--- Gestión de Servidores ---")
# Pedimos el índice al usuario
try:
indice = int(input("Ingresa un número del 0 al 3 para ver el servidor: "))
print(f"El servidor seleccionado es: {servidores[indice]}")
except IndexError:
print("Error: Ese número está fuera de rango. Solo tenemos 4 servidores
(0-3).")
except ValueError:
print("Error: Por favor, ingresa un número entero válido.")
print("\n--- Intento de modificación ---")
# Aquí intentamos cambiar un nombre para ver qué pasa
try:
print("Intentando cambiar el nombre del servidor 'Auth' por 'Login'...")
servidores[0] = "Login"
except TypeError as error:
print(f"¡Falló el intento! Error: {error}")
print("Explicación: Las tuplas en Python son 'inmutables'.")
print("Esto significa que una vez creadas, no puedes reasignar sus
elementos.")
print("\nFin de la prueba.")
3. Diccionario de Constantes (Hardware)
# Mi diccionario de hardware para el proyecto
# La idea es ver qué onda con los recursos de la PC
estado_pc = {
"CPU": "80%",
"RAM": "4GB",
"SSD": "Libre"
print("Estado inicial:")
print(estado_pc)
# Agregando un nuevo componente (me faltaba la gráfica)
estado_pc["GPU"] = "45°C"
# Actualizando la RAM porque le instalé más módulos
estado_pc["RAM"] = "16GB"
print("\n--- Estado Actualizado ---")
# Lo imprimo de forma más ordenada para que el profe no se pierda
for componente, estado in estado_pc.items():
print(f"Componente: {componente} | Estado: {estado}")
# Una pequeña comprobación final
print(f"\nTotal de componentes monitoreados: {len(estado_pc)}")
4. Análisis de Notas (Estadística con Listas)
import random
# Generamos 10 notas aleatorias entre 0 y 20 (suponiendo esa escala)
# Esto es más rápido que pedirlas una por una por teclado
notas = [[Link](0, 20) for _ in range(10)]
print(f"Las notas del grupo son: {notas}")
# Calculamos la nota más alta y la más baja
# Uso las funciones de Python para no complicarme
nota_maxima = max(notas)
nota_minima = min(notas)
# Para el promedio, sumamos todo y dividimos por la cantidad de notas
suma_total = sum(notas)
promedio = suma_total / len(notas)
print("\n--- Resultados del Grupo ---")
print(f"La nota más alta fue: {nota_maxima}")
print(f"La nota más baja fue: {nota_minima}")
# El :.2f es para que solo muestre dos decimales y no un número gigante
print(f"El promedio total es: {promedio:.2f}")
# Un pequeño mensaje extra para que se vea más humano
if promedio >= 10:
print("El grupo aprobó en promedio. ¡Bien ahí!")
else:
print("El promedio está bajo, toca estudiar más.")
5. Buscador de Precios (Diccionarios)
# Mi diccionario con los precios de la cafetería
menu = {
"Cafe Americano": 1.50,
"Capuchino": 2.50,
"Latte": 3.00,
"Muffin": 2.00,
"Te Frio": 1.75
print("--- BIENVENIDO A LA CAFETERÍA ---")
print("Productos disponibles hoy:")
# Mostramos el menú para que el usuario sepa qué pedir
for producto in menu:
print(f"- {producto}")
print("---------------------------------")
# Pedimos al usuario que escriba lo que quiere
pedido = input("¿Qué te gustaría ordenar?: ")
# Verificamos si lo que escribió está en nuestro diccionario
# Usamos el condicional 'in' que es súper directo en Python
if pedido in menu:
precio = menu[pedido]
print(f"¡Excelente elección! El {pedido} tiene un costo de ${precio}")
else:
print(f"Lo siento, el producto '{pedido}' no lo tenemos en el menú por
ahora.")
print("\nGracias por visitarnos.")
6. Matriz de Laboratorio (Listas de Listas)
# Representación del laboratorio LF6-LAB
# Es una matriz de 2 filas y 3 columnas
# Al principio todas están "Libres"
laboratorio = [
["Libre", "Libre", "Libre"], # Fila 0
["Libre", "Libre", "Libre"] # Fila 1
print("--- Estado Inicial del LF6-LAB ---")
for fila in laboratorio:
print(fila)
# Cambiamos el estado de la PC en la posición [1][2]
# Recordar: [1] es la segunda fila y [2] es la tercera PC
laboratorio[1][2] = "Mantenimiento"
print("\n--- Estado Actualizado (PC en mantenimiento) ---")
# Lo imprimo de nuevo para confirmar que el cambio se hizo bien
# Uso un contador para que se vea qué fila es cada una
for i in range(len(laboratorio)):
print(f"Fila {i}: {laboratorio[i]}")
print("\nCambio realizado con éxito en la posición [1][2].")
7. El Historial de Navegación (Pilas con Listas)
# Mi historial de navegación (simulando el navegador)
historial = [
"[Link]
"[Link]
"[Link]
print("Historial actual:")
print(historial)
# El usuario navega a una nueva página
nueva_url = "[Link]
print(f"\nNavegando a: {nueva_url}")
[Link](nueva_url)
print(f"Historial ahora: {historial}")
# Simulación del botón 'Atrás'
# El método .pop() saca el último elemento que entró
if len(historial) > 0:
url_eliminada = [Link]()
print(f"\n[Atrás] Saliste de: {url_eliminada}")
print(f"Regresaste a: {historial[-1]}")
print(f"Historial resultante: {historial}")
8. Registro de Proyecto (Diccionario Anidado)
# Definición del diccionario principal para el proyecto Nominus
# Lo estructuramos con datos anidados para organizar mejor la info
nominus_proyecto = {
"nombre": "Nominus",
# Lista de tecnologías que vamos a usar
"tecnologias": ["Python", "Flask", "PostgreSQL", "Docker"],
# El arquitecto es un sub-diccionario con sus propios datos
"arquitecto": {
"nombre": "Rafael Montilla",
"titulo": "Ingeniero de Software"
},
"estado": "En desarrollo"
print("--- DATOS DEL PROYECTO NOMINUS ---")
# Accediendo a los datos básicos
print(f"Proyecto: {nominus_proyecto['nombre']}")
print(f"Estado: {nominus_proyecto['estado']}")
# Mostrando las tecnologías (recorriendo la lista interna)
print("\nTecnologías implementadas:")
for tech in nominus_proyecto["tecnologias"]:
print(f"- {tech}")
# Accediendo al diccionario anidado (arquitecto)
# Usamos doble llave porque es un diccionario dentro de otro
info_arquitecto = nominus_proyecto["arquitecto"]
print(f"\nResponsable: {info_arquitecto['nombre']}")
print(f"Cargo: {info_arquitecto['titulo']}")
print("\n----------------------------------")
9. Filtrado de Usuarios Activos
# Lista de diccionarios (simulando una base de datos de usuarios)
usuarios = [
{"nombre": "Andrés", "activa": True},
{"nombre": "Beatriz", "activa": False},
{"nombre": "Carlos", "activa": True},
{"nombre": "Daniela", "activa": False},
{"nombre": "Esteban", "activa": True}
print("--- Usuarios con cuenta activa ---")
# Recorremos la lista con un ciclo for
for usuario in usuarios:
# Verificamos si la clave 'activa' es True
# Nota: No hace falta poner '== True', con el nombre de la clave basta
if usuario["activa"]:
print(f"Usuario activo: {usuario['nombre']}")
print("----------------------------------")
print("Fin del reporte.")
10. El "Mini-SaaS" Médico
# Lista de la clínica con algunos datos ya cargados
clinica = [
"paciente": "Luis Pérez",
"sintomas": ["Fiebre", "Tos", "Dolor de cabeza"],
"doctor": "Dr. Mendoza"
},
"paciente": "Maria Garcia",
"sintomas": ["Dolor de espalda"],
"doctor": "Dra. Rivas"
# Agregando un nuevo paciente al sistema
nuevo_paciente = {
"paciente": "Carlos Ruiz",
"sintomas": ["Alergia", "Estornudos"],
"doctor": "Dr. Salazar"
[Link](nuevo_paciente)
print("--- Registro de la Clínica ---")
print(f"Paciente nuevo agregado: {nuevo_paciente['paciente']}")
# Ahora vamos a ver cuántos síntomas tiene el primer paciente
# El primer paciente está en la posición [0]
primer_paciente = clinica[0]
nombre_primero = primer_paciente["paciente"]
# Usamos len() para contar los elementos de la lista de síntomas
cantidad_sintomas = len(primer_paciente["sintomas"])
print("\n--- Reporte del Primer Paciente ---")
print(f"Nombre: {nombre_primero}")
print(f"Cantidad de síntomas registrados: {cantidad_sintomas}")
# Un pequeño for para ver quiénes están en la lista ahora
print("\nLista actual de pacientes:")
for p in clinica:
print(f"- {p['paciente']} (Atendido por: {p['doctor']})")