🌪️ TWISTER
NIVEL 5
Tu única misión es la supervivencia. Cada línea de código importa.
📡 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 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.
El sistema usará tu nombre durante toda la operación. Podés dejarlo en blanco y serás "operador".
🏕️ Búsqueda de Refugio

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.
Bucle FOR
girá para ver sintaxis▸ tocáRecorre cada elemento de una lista, uno por vuelta del bucle.
for elemento in lista:
print(elemento)Contador + FOR
girá para ver sintaxis▸ tocáUn contador manual te permite numerar los elementos mientras los recorrés.
contador = 1
for elem in lista:
print(contador, elem)
contador += 1Indexación
girá para ver sintaxis▸ tocá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 elementoinput()
girá para ver sintaxis▸ tocáCaptura lo que escribe el usuario. Para usarlo como número, convertilo con int().
texto = input("¿Qué elegís? ")
numero = int(input("Número: "))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.
- Creá la lista con exactamente estos tres valores en este orden: Subterráneo, en las Montañas, en el Bosque.
- Antes del bucle, declaré una variable numérica con valor inicial uno — esa será el contador que numera cada opción.
- Con el bucle, recorré la lista elemento por elemento. En cada vuelta, imprimí el número seguido de punto y el nombre del refugio.
- No olvidés incrementar el contador en cada vuelta para que el número siguiente sea correcto.
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.
🏕️ Capturá la elección del responsable de turno
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.
- Usá input() para pedirle al usuario que ingrese su número de elección. Convertí inmediatamente ese valor a número entero.
- 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.
- Guardá el nombre del refugio en una variable llamada refugio_usuario.
- Imprimí un mensaje que confirme al usuario cuál es el refugio que eligió.
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.
🎒 Recolección Frenética

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.
Bucle WHILE
girá para ver sintaxis▸ tocáSe repite mientras una condición sea verdadera. Cuando se vuelve falsa, el bucle se detiene.
while condicion:
# bloque
# actualizar condicion.append()
girá para ver sintaxis▸ tocáAgrega un elemento al final de una lista existente, ampliándola en uno.
lista = []
lista.append("elemento")
# lista → ["elemento"]len()
girá para ver sintaxis▸ tocáDevuelve la cantidad de elementos que tiene una lista en ese momento.
len([1, 2, 3]) # → 3
len(mi_lista) < 5 # True/FalseAND lógico
girá para ver sintaxis▸ tocá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 vezCreá la lista de suministros con los 9 elementos y usá un bucle for para mostrarlos todos numerados, igual que hiciste con los refugios.
- Creá la lista llamada suministros_clave con exactamente estos nueve valores en minúsculas y en este orden: manta, fuego, comida, botiquin, kit furioso, linterna, radio, filtro, cobija.
- 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.
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 suministros_clave ahora tiene 9 elementos. Si te funciona el mismo código adaptado, vas bien.
🎒 Llenado de la valija de emergencia
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.
- Creá una lista vacía donde se irán acumulando los suministros elegidos. Llamala inventario_usuario.
- 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.
- 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.
- Dentro del bucle, pedí con input() qué suministro agregar. Si lo que ingresó no es "salir", agregalo a la lista con append().
- Al terminar el bucle, mostrá el inventario completo en pantalla.
¿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.
🔍 Verificación Crítica
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.
random.choice()
girá para ver sintaxis▸ tocáElige un elemento al azar de cualquier lista. Requiere importar el módulo random primero.
import random
r = random.choice(lista)
# r = un elemento al azar de la listain (operador)
girá para ver sintaxis▸ tocáVerifica si un valor existe dentro de una lista. Devuelve True si está, False si no.
"fuego" in lista
# True si está
# False si no estáVariable booleana
girá para ver sintaxis▸ tocá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 FalseCompletá estas tres acciones en secuencia. Las variables de misiones anteriores están disponibles en memoria.
- 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.
- 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.
- 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).
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.
⚡ El Momento de la Verdad

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.
IF / ELSE
girá para ver sintaxis▸ tocáEjecuta un bloque u otro según si la condición es True o False. Solo uno se ejecuta.
if condicion:
# si True
else:
# si Falsef-strings
girá para ver sintaxis▸ tocáPermiten insertar variables dentro de un texto. La f va antes de las comillas.
nombre = "Ana"
print(f"Hola, {nombre}")
# → Hola, AnaBooleana en if
girá para ver sintaxis▸ tocáUna variable True/False puede usarse directamente como condición del if, sin comparar.
if es_seguro:
print("refugio ok")
else:
print("falla crítica")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.
- 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]!"
- 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."
- En ambos casos, el nombre del suministro requerido debe aparecer dinámicamente usando la variable.
🏆 ¡Has sobrevivido al Twister! El refugio resistió. ¡Felicidades, ganaste con el botiquin!
Si es_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.