Operadores Lógicos (El Gerente de Piso)
Fig. 6.4: and exige todo; or acepta con uno; not invierte.
Una sola pregunta rara vez alcanza. En el almacén, las decisiones reales combinan condiciones: “¿Tenemos stock del producto Y el cliente tiene dinero?” Si falla cualquiera de las dos, la venta no pasa.
Los Operadores Lógicos son el Gerente de Piso que procesa varios reportes de los inspectores al mismo tiempo y decide con base en todos ellos.
1. AND (and) - El Exigente
El Gerente de Piso no negocia: “Solo apruebo si TODAS las condiciones se cumplen”.
stock = True
dinero = True
# ¿Ambas son verdad? -> Entonces True
puedo_comprar = stock and dinero
2. OR (or) - El Flexible
Aquí el criterio cambia. Basta con que una sola condición sea cierta para que el Gerente de Piso diga que sí.
es_fin_de_semana = False
es_feriado = True
# ¿Alguna es verdad? -> Entonces True
dia_libre = es_fin_de_semana or es_feriado
3. NOT (not) - El Contreras
El que siempre lleva la contraria: invierte lo que recibe. Sin condiciones, sin matices: verdad se vuelve falso, falso se vuelve verdad.
llueve = True
salir_a_correr = not llueve # False
Tabla de Verdad Resumida
| A | B | A and B (Exigente) | A or B (Flexible) |
|---|---|---|---|
| V | V | V | V |
| V | F | F | V |
| F | V | F | V |
| F | F | F | F |
Cortocircuito: Python es perezoso (y eso te sirve)
Python no hace trabajo de más. Evalúa de izquierda a derecha y se detiene en cuanto sabe la respuesta.
- En un
and, si la primera condición es Falsa, ya ni revisa la segunda (porque ya falló). - En un
or, si la primera es Verdadera, ya ni revisa la segunda (porque ya pasó).
Y aquí el detalle que sorprende: and y or no devuelven True/False, devuelven uno de los valores que recibieron. Eso habilita un truco muy usado, el valor por defecto:
nombre = entrada or "Invitado"
# Si 'entrada' trae texto, se queda con él.
# Si 'entrada' viene vacío, usa "Invitado".
entrada or "Invitado" se lee como “lo que haya en entrada, y si no, Invitado”. (Que un texto vacío cuente como falso lo verás en el próximo capítulo; por ahora basta la idea.)