Con una cuenta desbloqueas el cuestionario, el foro de dudas y el tutor con IA de esta lección, además del registro de progreso y el certificado verificable al terminar «Python para Ingeniería Espacial».
Hasta ahora tus programas hacen siempre lo mismo, en el mismo orden, pase lo que pase. Un sistema de operación real no puede ser así: tiene que descartar el pase que apenas roza el horizonte, avisar cuando la temperatura de la batería se sale de rango, elegir el modo de decodificación según la banda. Todo eso se construye con una única idea: evaluar una condición y ejecutar cosas distintas según el resultado.
Booleanos: el tipo de dos valores
El tipo bool solo admite dos valores, True y False (con mayúscula inicial; Python es estricto). Los produce cualquier comparación:
Operador
Significado
Ejemplo
Resultado
==
Igual a
elevacion == 10
False si vale 47
!=
Distinto de
banda != "VHF"
True si es UHF
>
Mayor que
47.3 > 10
True
>=
Mayor o igual
10.0 >= 10
True
<
Menor que
4.2 < 10
True
<=
Menor o igual
9.9 <= 10
True
Grábate esta distinción a fuego, porque es el error número uno de todo principiante: = asigna, == compara. elevacion = 10 cambia el valor de la variable; elevacion == 10 pregunta si vale diez y responde True o False. Confundirlos dentro de un if es un SyntaxError en Python (afortunadamente), pero en otros lenguajes compila y produce bugs silenciosos que han costado misiones.
if, elif, else
La estructura básica se lee tal cual suena. Fíjate en dos elementos de sintaxis que Python trata como obligatorios: los dos puntos al final de la línea de condición y la indentación (cuatro espacios) del bloque que depende de ella. En Python la indentación no es estética: es la sintaxis. Lo que está indentado bajo el if pertenece al if; lo que vuelve al margen se ejecuta siempre.
elevacion_max = 47.3
if elevacion_max >= 10:
print("Pase válido: supera la máscara de elevación")
else:
print("Pase descartado: demasiado bajo")
print("Esta línea se imprime siempre, decida lo que decida el if")
Cuando hay más de dos caminos entra elif (contracción de else if). La regla de oro es que las ramas se evalúan en orden y solo se ejecuta la primera que resulte verdadera; el resto ni se mira. Eso permite escribir clasificaciones por umbrales sin repetir los límites inferiores.
El ejemplo vertebral: la máscara de elevación
Una estación terrena no puede ver un satélite que está justo en el horizonte: hay edificios, árboles, montañas y, sobre todo, una atmósfera que a ángulos rasantes atraviesa muchísimo más aire y degrada la señal. Por eso toda estación define una máscara de elevación: el ángulo mínimo sobre el horizonte por debajo del cual un pase no se considera utilizable. Diez grados es un valor típico para VHF y UHF; en banda Ka, donde la lluvia castiga más, se suben a 20 o 25 grados.
Nota que visible guarda directamente el booleano, sin necesidad de if. Es un patrón limpio y muy usado: cuando lo único que quieres es el resultado de la comparación, guárdalo tal cual; el if se reserva para cuando hay que hacer cosas distintas.
Clasificar la calidad de un pase
La elevación máxima de un pase predice bastante bien su utilidad: cuanto más alto pasa el satélite, más cerca está, menos atmósfera atraviesa la señal y más dura el contacto. El criterio que usaremos en todo el curso:
Elevación máxima
Calidad
Qué significa en la práctica
≥60°
Excelente
Pase casi cenital, señal fuerte, imagen APT limpia
30° a 60°
Buena
Contacto sólido, algo de ruido al principio y al final
10° a 30°
Marginal
Utilizable si no hay nada mejor; degradación notable
<10°
Descartado
Bajo la máscara: no se agenda
Ejemplo resuelto: una tarde de pases
Apliquemos el clasificador a la agenda real de una tarde, con máscara de 10°:
Satélite
Elevación máxima
Rama que se dispara
Calidad
NOAA-15
4.2°
ninguna de las tres primeras
Descartado
METEOR-M2-4
12.0°
tercera (>= 10)
Marginal
ISS
61.5°
primera (>= 60)
Excelente
NOAA-18
30.0°
segunda (>= 30)
Buena
AO-73
9.9°
ninguna
Descartado
NOAA-19
75.3°
primera (>= 60)
Excelente
Con máscara de 10° sobreviven cuatro de los seis pases. Presta atención a las dos filas fronterizas, que es donde viven los bugs: 30.0° entra en "buena" porque la comparación es >= y no >; 9.9° queda fuera por una décima de grado. Los límites de los intervalos son decisiones de ingeniería y hay que escribirlos con intención, no dejar que salgan por accidente de un > mal elegido.
Playground · python
Combinar condiciones: and, or, not
Rara vez una sola comparación basta. Los tres operadores lógicos combinan booleanos:
and: verdadero solo si ambos lados lo son. "Supera la máscara y dura lo suficiente".
or: verdadero si al menos uno lo es. "Es banda VHF o es banda UHF".
not: invierte. "No está lloviendo".
Python evalúa and/or en cortocircuito: si el primer operando de un and ya es falso, ni siquiera mira el segundo. Esto es más que una optimización, es una herramienta: te permite poner primero la comprobación barata o la que protege a la siguiente.
Y una comodidad que casi ningún lenguaje tiene: las comparaciones se encadenan como en matemáticas. 10 <= elevacion <= 60 es válido y se lee igual que 10≤e≤60. Es mucho más claro que elevacion >= 10 and elevacion <= 60.
Playground · python
Anidar con mesura
Un if puede contener otro if, y eso a veces es la forma natural de expresar una decisión de dos niveles. Pero cada nivel de indentación es un nivel de dificultad para quien lee, y a partir del tercero el código se vuelve una escalera ilegible que la profesión llama, con cariño, arrow code por su forma de flecha.
La cura casi siempre es la misma: combinar condiciones con and en lugar de anidarlas, o salir pronto de los casos imposibles. Compara:
# Anidado: tres niveles para decir una sola cosa.
if estacion_libre:
if elevacion_max >= 10:
if duracion_min >= 6:
print("agendar")
# Plano: la misma decisión, legible de un vistazo.
if estacion_libre and elevacion_max >= 10 and duracion_min >= 6:
print("agendar")
Las dos versiones hacen exactamente lo mismo. La segunda se entiende sin mover los ojos en diagonal, y cuando dentro de un año haya que añadir una cuarta condición, se añade en su sitio en vez de abrir un cuarto nivel.
1 de 7
Comprueba el error número uno del principiante:
Dentro de un if, ¿cuál es la diferencia entre elevacion = 10 y elevacion == 10?
Ya puedes clasificar un pase. Pero una agenda tiene decenas, y una señal muestreada tiene miles de puntos. Copiar el mismo if mil veces no es opción: hace falta repetir. Esa es la lección 4.