Operadores + lógica booleana
Comparación, identidad y verdad
Por qué importa
La toma de decisiones y los bucles dependen de los booleanos. Una comparación equivocada lo rompe todo.
La idea
Los operadores transforman expresiones en valores nuevos. == comprueba la igualdad de valores, is comprueba la identidad (el mismo objeto en memoria). Para literales, 1 == 1.0 es True pero 1 is 1.0 es False.
Operadores aritméticos
| Operador | Significado |
| --- | --- |
| + | sumar |
| - | restar |
| * | multiplicar |
| / | dividir (float) |
| // | división entera |
| % | resto |
| ** | potencia |
/ siempre devuelve un float (6 / 2 == 3.0); usa // cuando quieras un cociente entero. % da el resto: la herramienta de cabecera para "¿es par?" y los problemas de índices cíclicos.
Pruébalo
La veracidad (truthiness) en Python: 0, "", [], {}, None son todos falsos. Todo lo demás es verdadero.
for v in [0, 1, "", "hi", [], [0], None, {}, {"k": 0}]:
print(repr(v), "->", bool(v))
Evaluación de cortocircuito: and devuelve el primer operando falso (o el último valor); or devuelve el primero verdadero.
print(0 or "fallback") # 'fallback'
print(5 or "fallback") # 5
print(0 and "blocked") # 0
print(5 and "passed") # 'passed'
Identidad frente a igualdad: muerde en el código real:
a = [1, 2, 3]
b = [1, 2, 3]
print(a == b) # True — same values
print(a is b) # False — different objects
c = a
print(a is c) # True — same object
Verificación rápida
- P: ¿Cuándo deberías usar
is? R: Para comprobaciones de identidad (comox is None).
Mini ejercicios
- Comprueba si un número es par usando
%. - Verifica si un carácter existe dentro de una cadena.
Buenas y malas prácticas
- Usa
x is Nonepara las comprobaciones deNone. - No uses
ispara comparar cadenas o números.
Errores comunes
- Error: Usar
isen lugar de==. Solución: Usa==para la igualdad de valores. - Error:
if x = 3. Solución: Usa==en las condiciones.
Conclusiones clave
==compara el valor;iscompara la identidad.- Los operadores de cortocircuito sirven para asignar valores por defecto (
x or 0). - Valores falsos:
0,"",[],{},None,set(). - Nunca compares explícitamente con
True/False: simplemente usa el valor.