alerta máxima — nivel 5

🌪️ TWISTER
NIVEL 5

Tu única misión es la supervivencia. Cada línea de código importa.

Progreso de supervivencia 0%
0 / 4 Misiones Completadas

📡 TRANSMISIÓN INTERCEPTADA — SISTEMA DE ALERTA METEOROLÓGICA NACIONAL

Un Twister Categoría 5 se aproxima a tu zona con vientos de 350 km/h. Las autoridades han activado el protocolo de emergencia extrema. Tienes aproximadamente 47 minutos antes del impacto.

El sistema de gestión de crisis depende de tu capacidad para programar en Python. Deberás tomar decisiones críticas automatizadas que determinarán si sobrevivís al evento más destructivo en décadas.

⚠️ Cada misión depende de la anterior. El Paso 2 de cada misión se habilitará solo cuando el sistema valide tu Paso 1. No hay atajos.

🏕️
// misión 01 de 04

Búsqueda de Refugio

El sistema de supervivencia necesita que identifies y selecciones un punto de refugio antes de que el Twister alcance tu zona.

Las alarmas suenan sin parar. La pantalla de tu terminal parpadea: PROTOCOLO DE EVACUACIÓN ACTIVADO. El sistema de gestión de crisis detectó tres refugios disponibles en un radio de 15 km. Necesitás que el programa los liste en pantalla para que el equipo de operaciones pueda verlos claramente.

Una vez mostrada la lista, el sistema capturará la elección del responsable de turno. La decisión quedará registrada en la variable de estado refugio_usuario, que más adelante determinará las condiciones de supervivencia.

📍 REFUGIOS DISPONIBLES: Subterráneo / en las Montañas / en el Bosque

Bucle FOR

girá para ver sintaxis

Recorre cada elemento de una lista, uno por vuelta del bucle.

for elemento in lista: print(elemento)

Contador + FOR

girá para ver sintaxis

Un contador manual te permite numerar los elementos mientras los recorrés.

contador = 1 for elem in lista: print(contador, elem) contador += 1

Indexación

girá para ver sintaxis

Accedé a un elemento específico por su posición en la lista (empieza en 0).

lista[0] # primer elemento lista[1] # segundo elemento lista[2] # tercer elemento

input()

girá para ver sintaxis

Captura lo que escribe el usuario. Para usarlo como número, convertilo con int().

texto = input("¿Qué elegís? ") numero = int(input("Número: "))
1
Mostrá la lista de refugios en pantalla
📻
COMUNICADO DEL SISTEMA: El equipo de operaciones necesita ver los refugios disponibles numerados en la terminal. Sin esa lista visible, nadie puede tomar una decisión informada.
📋 Tu tarea — Paso 1

Creá una lista con los tres nombres de refugio y usá un bucle for para mostrar cada opción precedida de su número de orden.

  1. Creá la lista con exactamente estos tres valores en este orden: Subterráneo, en las Montañas, en el Bosque.
  2. Antes del bucle, declaré una variable numérica con valor inicial uno — esa será el contador que numera cada opción.
  3. Con el bucle, recorré la lista elemento por elemento. En cada vuelta, imprimí el número seguido de punto y el nombre del refugio.
  4. No olvidés incrementar el contador en cada vuelta para que el número siguiente sea correcto.
▸ Salida esperada en pantalla
1. Subterráneo
2. en las Montañas
3. en el Bosque
💡

Si no recordás cómo numerar elementos con un bucle for, consultá la tarjeta "Contador + FOR" de arriba. El patrón es siempre el mismo: crear el contador antes, usarlo adentro, incrementarlo al final de cada vuelta.

mision1_paso1.py

2
Capturá la elección del responsable de turno
🔒 Completá el Paso 1 primero
🚨
T-38 MINUTOS: El responsable de turno está en la terminal. Ahora el sistema debe pedirle que ingrese su elección (1, 2 o 3) y registrar automáticamente a qué refugio corresponde ese número.
📋 Tu tarea — Paso 2

Pedile al usuario que ingrese un número del 1 al 3 para indicar su refugio, y guardá el nombre del refugio correspondiente en una variable.

  1. Usá input() para pedirle al usuario que ingrese su número de elección. Convertí inmediatamente ese valor a número entero.
  2. La lista que creaste en el Paso 1 ya está disponible en memoria. Para acceder al refugio elegido, recordá que la lista empieza en el índice 0, no en 1. Por eso, si el usuario elige el número 1, el índice correspondiente es 0; si elige 2, el índice es 1; y así sucesivamente.
  3. Guardá el nombre del refugio en una variable llamada refugio_usuario.
  4. Imprimí un mensaje que confirme al usuario cuál es el refugio que eligió.
▸ Ejemplo de salida (si el usuario ingresa 2)
Has elegido: en las Montañas
🗝️

La clave está en la diferencia entre lo que el usuario ve (1, 2, 3) y lo que Python usa como índice (0, 1, 2). Consultá la tarjeta "Indexación" si necesitás recordar cómo acceder a un elemento por su posición. La diferencia es siempre un valor de uno.

mision1_paso2.py
🎒
// misión 02 de 04

Recolección Frenética

Tenés tiempo para cargar como máximo 5 elementos en la valija de emergencia. Lo que elijas ahora puede ser la diferencia entre la vida y la muerte.

Ya estás en el refugio. Pero las condiciones empeorarán antes de estabilizarse. El sistema de abastecimiento logró identificar 9 suministros críticos dispersos en la zona de peligro inmediato.

Un drone de carga puede trasladar un máximo de 5 artículos antes de que el Twister haga inviable cualquier operación aérea. Tenés que indicarle al sistema cuáles suministros recolectar. Elegí con sabiduría: uno de ellos será vital para resistir el impacto.

🎯 CAPACIDAD MÁXIMA: 5 artículos | SUMINISTROS DISPONIBLES: 9

Bucle WHILE

girá para ver sintaxis

Se repite mientras una condición sea verdadera. Cuando la condición se vuelve falsa, el bucle se detiene.

while condicion: # bloque # actualizar condicion

.append()

girá para ver sintaxis

Agrega un elemento al final de una lista existente, ampliándola en uno.

lista = [] lista.append("elemento") # lista → ["elemento"]

len()

girá para ver sintaxis

Devuelve la cantidad de elementos que tiene una lista en ese momento.

len([1, 2, 3]) # → 3 len(mi_lista) < 5 # True/False

AND lógico

girá para ver sintaxis

Combina dos condiciones: ambas deben ser verdaderas para que el resultado sea True.

while condA and condB: # solo si las dos # son True a la vez
1
Mostrá los 9 suministros disponibles
📦
INVENTARIO DEL DRONE: El operador necesita ver en pantalla la lista completa de los 9 suministros antes de poder ingresar su selección al sistema.
📋 Tu tarea — Paso 1

Creá la lista de suministros con los 9 elementos y usá un bucle for para mostrarlos todos numerados, igual que hiciste con los refugios.

  1. Creá la lista con exactamente estos nueve valores en minúsculas y en este orden: manta, fuego, comida, botiquin, kit furioso, linterna, radio, filtro, cobija.
  2. Usá el mismo patrón del Paso 1 de la Misión anterior: un contador que inicia en uno, un bucle for que recorre la lista, imprimís contador + nombre, y al final de cada vuelta incrementás el contador.
▸ Salida esperada en pantalla
1. manta
2. fuego
3. comida
4. botiquin
5. kit furioso
6. linterna
7. radio
8. filtro
9. cobija
💡

Es exactamente el mismo patrón que usaste en la Misión 1, Paso 1. La única diferencia es que la lista ahora tiene 9 elementos. Si te funciona el mismo código adaptado, vas bien.

mision2_paso1.py

2
Llenado de la valija de emergencia
🔒 Completá el Paso 1 primero
⏱️
VENTANA DE CARGA ABIERTA: El drone puede recibir instrucciones. El operador ingresará los suministros uno a uno hasta completar la carga o hasta decidir cerrar la operación escribiendo "salir". Dos condiciones pueden cerrar la ventana: que la valija esté llena (5 artículos) o que el operador decida parar.
📋 Tu tarea — Paso 2

Creá un bucle que le pida repetidamente al usuario que ingrese suministros, y que se detenga cuando se cumpla cualquiera de las dos condiciones de cierre.

  1. Creá una lista vacía donde se irán acumulando los suministros elegidos. Llamala inventario_usuario.
  2. Creá una variable de texto vacía que usarás para guardar lo que escribe el usuario en cada vuelta. Esa variable también formará parte de la condición del bucle.
  3. El bucle while debe continuar solamente mientras se cumplan las dos condiciones al mismo tiempo: que el inventario tenga menos de 5 elementos, Y que el usuario no haya escrito la palabra "salir". Si cualquiera de las dos falla, el bucle se detiene.
  4. Dentro del bucle, pedí con input() qué suministro agregar. Si lo que ingresó no es "salir", agregalo a la lista con append().
  5. Al terminar el bucle, mostrá el inventario completo en pantalla.
▸ Ejemplo de interacción (3 elementos y "salir")
¿Qué suministro agregás? (o 'salir'): manta
¿Qué suministro agregás? (o 'salir'): fuego
¿Qué suministro agregás? (o 'salir'): botiquin
¿Qué suministro agregás? (o 'salir'): salir
Tu inventario: ['manta', 'fuego', 'botiquin']
⚠️

Atención al orden del while: la condición del bucle se evalúa antes de cada vuelta. Para que el operador pueda escribir "salir" en la primera vuelta y el bucle no ejecute nada, la variable de texto debe estar inicializada como vacía antes del while.

mision2_paso2.py
🔍
// misión 03 de 04

Verificación Crítica

El sistema de ingeniería del refugio detectó una falla. Necesita un suministro muy específico para sellar las estructuras. ¿Lo tenés?

Las paredes tiemblan. El sensor de presión estructural lanzó una ALERTA ROJA CRÍTICA. El sistema de ingeniería del refugio analizó las condiciones actuales y determinó que necesita un suministro específico para sellar un punto débil en la estructura.

El sistema seleccionará ese suministro al azar del inventario original de 9 elementos —no del tuyo, sino del inventario global. Lo que determinará tu supervivencia es si ese suministro que el sistema necesita está o no está en tu valija.

El resultado quedará registrado en la variable es_seguro: verdadero si lo tenés, falso si no.

🎲 SUMINISTRO REQUERIDO: seleccionado aleatoriamente por el sistema | RESULTADO: True o False

random.choice()

girá para ver sintaxis

Elige un elemento completamente al azar de cualquier lista. Requiere importar el módulo random primero.

import random r = random.choice(lista) # r = un elemento al azar

in (operador)

girá para ver sintaxis

Verifica si un valor existe dentro de una lista. Devuelve True si está, False si no está.

"fuego" in lista # True si está # False si no está

Variable booleana

girá para ver sintaxis

Guarda el resultado de una condición como True o False directamente en una variable.

es_seguro = "fuego" in mi_lista print(es_seguro) # → True o False
📋 Tu tarea — Misión 3

Completá estas tres acciones en secuencia. Las variables de misiones anteriores están disponibles en memoria.

  1. Elegí el suministro requerido al azar: el sistema de ingeniería debe seleccionar aleatoriamente uno de los 9 suministros originales usando la función de Python que elige elementos al azar de una lista. Guardá ese suministro en una variable llamada suministro_requerido. No olvidés importar el módulo correspondiente.
  2. Verificá si ese suministro está en tu valija: usá el operador lógico que verifica pertenencia para comparar suministro_requerido contra tu inventario_usuario. El resultado (verdadero o falso) guardalo en una variable llamada es_seguro.
  3. Mostrá el diagnóstico: imprimí en pantalla cuál es el suministro requerido y si el refugio está asegurado o no (mostrá el valor de es_seguro).
▸ Ejemplo de salida posible
Suministro requerido: botiquin
¿Está en tu inventario?: True
✅ El refugio está asegurado.
🎲

El valor de es_seguro dependerá directamente de qué suministros elegiste en la Misión 2 y de cuál el sistema seleccione al azar. Si esta vez sale False, podrás volver a la Misión 2, cambiar tu elección, y volver a ejecutar la Misión 3.

mision3.py
// misión 04 de 04 — misión final

El Momento de la Verdad

El Twister golpea ahora. El sistema lee es_seguro y ejecuta el protocolo correspondiente. Esta es tu última línea de defensa.

Las comunicaciones de superficie se cortaron. El sistema de alerta emitió su última señal: IMPACTO CONFIRMADO EN 120 SEGUNDOS.

Todo lo que hiciste hasta ahora converge en este momento. La variable es_seguro ya tiene el veredicto. El sistema ahora necesita que le indiqués cómo debe responder: si el refugio resistió, deberá emitir el mensaje de victoria; si no, el protocolo de pérdida.

Vas a usar una estructura if/else para que el programa tome automáticamente la decisión correcta según el valor booleano que ya calculaste.

⚡ VARIABLE DE DECISIÓN: es_seguro | RESULTADO POSIBLE: SUPERVIVENCIA o GAME OVER

IF / ELSE

girá para ver sintaxis

Ejecuta un bloque u otro según si la condición es True o False. Solo uno de los dos bloques se ejecuta.

if condicion: # si True else: # si False

f-strings

girá para ver sintaxis

Permiten insertar variables dentro de un texto de forma directa. La f va antes de las comillas.

nombre = "Ana" print(f"Hola, {nombre}") # → Hola, Ana

Variable booleana en if

girá para ver sintaxis

Una variable True/False puede usarse directamente como condición del if, sin comparar con nada.

if es_seguro: print("refugio ok") else: print("falla crítica")
📋 Tu tarea — Misión Final

Escribí una estructura if/else que lea el valor de es_seguro y emita el mensaje correcto usando f-strings para incluir el nombre del suministro.

  1. Si es_seguro es verdadero: el sistema debe imprimir exactamente este mensaje: "🏆 ¡Has sobrevivido al Twister! El refugio resistió. ¡Felicidades, ganaste con el [nombre del suministro]!"
  2. Si es_seguro es falso: el sistema debe imprimir exactamente este mensaje: "💀 El refugio no resistió el Twister. Te faltó el [nombre del suministro]. Game Over, camarada."
  3. En ambos casos, el nombre del suministro requerido debe aparecer dinámicamente usando la variable.
▸ Ejemplo de salida — Victoria
🏆 ¡Has sobrevivido al Twister! El refugio resistió. ¡Felicidades, ganaste con el botiquin!
🏆

Si is_seguro es una variable booleana, podés usarla directamente como condición del if sin necesidad de compararla con True. El f-string se encarga de insertar el nombre del suministro automáticamente.

mision4_final.py
🔹 Panel de Control — Estado Final
Si completaste y aprobaste todas las misiones y el resultado fue victoria (es_seguro = True), obtendrás la palabra clave de supervivencia.
MisiónEstado
Misión 1 — Búsqueda de Refugio
Misión 2 — Recolección Frenética
Misión 3 — Verificación Crítica
Misión 4 — Momento de la Verdad