CAP 02 · LEC 03·Sintaxis

Operadores: aritméticos, comparación, lógicos y especiales

Python tiene más operadores que la mayoría de lenguajes. Además de los aritméticos clásicos, incluye // para división entera, ** para potencias e `in` para pertenencia.

● PRINCIPIANTE9 min lectura4 ejerciciospor Fernando Herrera · actualizado mayo de 2026
¿Encontraste un error o algo que mejorar?Editá esta lección en GitHub →

Operadores aritméticos

Python tiene siete operadores aritméticos. Los tres últimos son los que distinguen a Python:

# Los clásicos print(10 + 3) # Suma → 13 print(10 - 3) # Resta → 7 print(10 * 3) # Multiplicación → 30 print(10 / 3) # División real → 3.3333... (siempre float) # Los especiales de Python print(10 // 3) # División entera → 3 (trunca hacia el mínimo) print(10 % 3) # Módulo (resto) → 1 print(10 ** 3) # Potencia → 1000 print(2 ** 10) # → 1024 # División entera con negativos: trunca hacia el mínimo (floor) print(-7 // 2) # → -4 (no -3 como cabría esperar) print(7 // -2) # → -4 # Módulo siempre tiene el mismo signo que el divisor print(-7 % 3) # → 2 print(7 % -3) # → -2
Salida13 7 30 3.3333333333333335 3 1 1000 1024 -4 -4 2 -2
Truco para comprobar si es par

numero % 2 == 0 es la forma idiomática de saber si un número es par. Si el resto al dividir por 2 es 0, es par.

Operadores de comparación

Los operadores de comparación devuelven siempre True o False:

# Comparaciones básicas print(10 == 10) # Igual que → True print(10 != 5) # Distinto de → True print(10 > 5) # Mayor que → True print(10 < 5) # Menor que → False print(10 >= 10) # Mayor o igual que → True print(10 <= 9) # Menor o igual que → False # Python permite encadenar comparaciones (muy elegante) edad = 25 print(18 <= edad < 65) # True — adulto en edad laboral print(0 < 5 < 10 < 20) # True — comparación encadenada # is vs == — diferencia crítica a = [1, 2, 3] b = [1, 2, 3] print(a == b) # True — mismo contenido print(a is b) # False — objetos distintos en memoria c = a # c apunta al mismo objeto print(a is c) # True — misma referencia
SalidaTrue True True False True False True True True False True
is no es igual que ==

is compara identidad (¿son el mismo objeto en memoria?). == compara valor (¿tienen el mismo contenido?). Usa is solo para None, True y False. Para todo lo demás, usa ==.

Operadores lógicos

Python usa palabras en lugar de símbolos para los operadores lógicos: and, or, not.

# and — verdadero solo si ambos son verdaderos print(True and True) # True print(True and False) # False print(False and True) # False # or — verdadero si al menos uno es verdadero print(True or False) # True print(False or False) # False # not — niega el valor print(not True) # False print(not False) # True # Evaluación de cortocircuito (short-circuit) # and: si el primero es falso, no evalúa el segundo # or: si el primero es verdadero, no evalúa el segundo def efecto(): print("función ejecutada") return True # and con cortocircuito — False and ... nunca evalúa el segundo False and efecto() # efecto() no se llama # or con cortocircuito — True or ... nunca evalúa el segundo True or efecto() # efecto() no se llama # Valores por defecto con or nombre = "" or "Anónimo" # "Anónimo" (porque "" es falsy) print(nombre) # Anónimo # Más idiomático en Python moderno: operador walrus o condicional nombre = "Fernando" or "Anónimo" print(nombre) # Fernando
SalidaTrue False False True False False True Anónimo Fernando

Operadores especiales: in, is, not in, is not

Python tiene operadores que no existen en la mayoría de lenguajes y que hacen el código muy expresivo:

# in — comprueba pertenencia en una colección frutas = ["manzana", "pera", "uva"] print("pera" in frutas) # True print("mango" in frutas) # False print("mango" not in frutas) # True # in también funciona con strings, dicts, sets, etc. texto = "Hola, mundo" print("mundo" in texto) # True print("Python" in texto) # False config = {"debug": True, "port": 8000} print("debug" in config) # True — busca en las claves del dict # is / is not — identidad de objeto (usar solo con None) valor = None print(valor is None) # True ✅ idiomático print(valor is not None) # False ✅ idiomático print(valor == None) # True ← funciona pero no es idiomático
SalidaTrue False True True False True True False True

Operadores de asignación aumentada

Combinan una operación con la asignación, modificando la variable en el lugar:

n = 10 n += 5 # n = n + 5 → 15 n -= 3 # n = n - 3 → 12 n *= 2 # n = n * 2 → 24 n /= 4 # n = n / 4 → 6.0 (nota: convierte a float) n //= 2 # n = n // 2 → 3.0 n **= 3 # n = n ** 3 → 27.0 n %= 5 # n = n % 5 → 2.0 print(n) # 2.0 # También funcionan con strings y listas mensaje = "Hola" mensaje += ", mundo" print(mensaje) # Hola, mundo lista = [1, 2] lista += [3, 4] # equivale a lista.extend([3, 4]) print(lista) # [1, 2, 3, 4]
Salida2.0 Hola, mundo [1, 2, 3, 4]
El operador walrus := (Python 3.8+)

El operador walrus := asigna y devuelve el valor en una sola expresión. Es útil en condiciones y comprensiones de listas: if (n := len(datos)) > 10: print(f"Hay {n} elementos"). Úsalo con moderación — solo cuando mejora la legibilidad.

Practica

Cuatro ejercicios para dominar los operadores de Python.