Los booleanos en Python representan dos estados: True y False. Son el resultado de comparaciones y controlan condiciones, validaciones, bucles y decisiones. Aunque parecen simples, es importante comprender los valores truthy y falsy, los operadores lógicos, la evaluación de cortocircuito y la diferencia entre igualdad e identidad.
La documentación oficial sobre comprobación del valor de verdad describe qué objetos se consideran falsos. La referencia de operaciones booleanas explica and, or y not.
Crear valores booleanos
activo = True
bloqueado = False
print(type(activo)) # boolEscribe True y False con mayúscula inicial. Los textos "True" y "False" son strings, no booleanos.
Comparaciones
edad = 21
print(edad >= 18)
print(edad == 21)
print(edad != 30)
print(18 <= edad < 65)Las comparaciones devuelven booleanos. La guía de operadores en Python explica comparación, identidad, pertenencia y precedencia.
Condiciones con if
usuario_activo = True
if usuario_activo:
print("Acceso permitido")
else:
print("Cuenta inactiva")No es necesario escribir if usuario_activo == True. Usar el booleano directamente resulta más claro.
Operador and
edad = 25
tiene_documento = True
puede_entrar = edad >= 18 and tiene_documento
print(puede_entrar)and exige que ambas condiciones sean verdaderas.
Operador or
es_admin = False
es_editor = True
puede_publicar = es_admin or es_editor
print(puede_publicar)or necesita al menos una condición verdadera.
Operador not
sesion_cerrada = False
if not sesion_cerrada:
print("La sesión sigue activa")not invierte el valor de verdad.
Valores truthy y falsy
Además de False, se consideran falsos valores como None, cero y colecciones vacías.
valores = [
False,
None,
0,
0.0,
"",
[],
{},
set(),
]
for valor in valores:
print(repr(valor), bool(valor))La mayoría de los demás objetos son truthy. Esto permite comprobar si una colección tiene elementos:
resultados = [10, 20]
if resultados:
print("Hay resultados")None no significa False en todos los casos
resultado = None
if resultado is None:
print("No existe un resultado todavía")None, cero y una cadena vacía pueden representar situaciones distintas. La guía de None en Python explica cómo comprobar la ausencia de un valor con is None.
bool() y conversiones
print(bool(1)) # True
print(bool(0)) # False
print(bool("False")) # True
print(bool("")) # FalseUna cadena no vacía es verdadera aunque contenga la palabra “False”. Para convertir texto del usuario, define reglas explícitas.
def convertir_booleano(texto):
normalizado = texto.strip().casefold()
if normalizado in {"sí", "si", "s", "true", "1"}:
return True
if normalizado in {"no", "n", "false", "0"}:
return False
raise ValueError(f"Valor booleano no válido: {texto!r}")La guía del operador in en Python explica las pruebas de pertenencia utilizadas.
Evaluación de cortocircuito
Python evalúa solamente lo necesario. En and, si la primera parte es falsa, la segunda no se ejecuta. En or, si la primera es verdadera, la segunda se omite.
usuario = None
if usuario is not None and usuario.get("activo"):
print("Usuario activo")La segunda expresión solo se evalúa cuando usuario no es None.
and y or devuelven operandos
nombre = ""
nombre_visible = nombre or "Invitado"
print(nombre_visible)or devuelve el primer operando truthy o el último evaluado. Este patrón es útil para valores predeterminados, pero puede reemplazar accidentalmente ceros o cadenas vacías válidas.
any() y all()
permisos = [False, True, False]
validaciones = [True, True, True]
print(any(permisos))
print(all(validaciones))any()devuelve verdadero si algún elemento es truthy.all()devuelve verdadero si todos son truthy.
Igualdad e identidad
lista_a = [1, 2]
lista_b = [1, 2]
print(lista_a == lista_b) # mismos valores
print(lista_a is lista_b) # objetos diferentesUsa == para comparar valores. Reserva is para identidad, especialmente is None.
Booleanos en funciones
def puede_comprar(edad, saldo, bloqueado=False):
return (
edad >= 18
and saldo > 0
and not bloqueado
)Una función predicativa debe tener un nombre que sugiera una respuesta verdadera o falsa. La guía de funciones en Python ayuda a organizar estas reglas.
Validar entrada
while True:
respuesta = input("¿Continuar? [s/n]: ").strip()
try:
continuar = convertir_booleano(respuesta)
except ValueError:
print("Escribe s o n")
continue
breakPara conversiones y reintentos, consulta la guía de input() en Python.
Errores frecuentes
- Escribir
trueofalseen minúsculas. - Creer que
bool("False")devuelve falso. - Confundir
iscon==. - Usar
if valorcuando cero y ausencia tienen significados diferentes. - Crear condiciones largas sin nombres intermedios.
- Capturar errores de conversión sin informar el valor inválido.
Conclusión
Los booleanos en Python conectan comparaciones con decisiones. Comprende los valores truthy y falsy, usa is None para ausencia, aprovecha el cortocircuito con cuidado y convierte texto mediante reglas explícitas. Una condición clara suele ser más valiosa que una expresión breve pero difícil de interpretar.






