Operadores de comparación y operadores lógicos avanzados
Introducción
Los operadores de comparación y lógicos son herramientas fundamentales en Python que nos permiten evaluar condiciones y tomar decisiones en nuestros programas. Estos operadores son esenciales para crear expresiones condicionales que determinan el flujo de ejecución del código. En este artículo, profundizaremos en los diferentes tipos de operadores de comparación y lógicos disponibles en Python, y aprenderemos cómo combinarlos de manera efectiva para crear condiciones complejas y precisas.
Operadores de comparación en Python
Los operadores de comparación se utilizan para comparar dos valores y devolver un resultado booleano (True
o False
). Estos son los operadores de comparación disponibles en Python:
Operador de igualdad (==)
Comprueba si dos valores son iguales:
# Comparación de números
x = 5
y = 5
print(x == y) # Devuelve True, porque 5 es igual a 5
# Comparación de cadenas
nombre1 = "Ana"
nombre2 = "ana"
print(nombre1 == nombre2) # Devuelve False, porque las mayúsculas y minúsculas importan
Operador de desigualdad (!=)
Comprueba si dos valores son diferentes:
a = 10
b = 20
print(a != b) # Devuelve True, porque 10 es diferente de 20
# Con cadenas
ciudad1 = "Madrid"
ciudad2 = "Madrid"
print(ciudad1 != ciudad2) # Devuelve False, porque las cadenas son iguales
Operadores mayor que (>) y menor que (<)
Comprueban si un valor es mayor o menor que otro:
edad1 = 25
edad2 = 30
print(edad1 > edad2) # Devuelve False, porque 25 no es mayor que 30
print(edad1 < edad2) # Devuelve True, porque 25 es menor que 30
# También funcionan con cadenas (comparación lexicográfica)
palabra1 = "casa"
palabra2 = "cosa"
print(palabra1 < palabra2) # Devuelve True, porque 'casa' va antes que 'cosa' alfabéticamente
Operadores mayor o igual que (>=) y menor o igual que (<=)
Comprueban si un valor es mayor/menor o igual que otro:
temperatura1 = 22
temperatura2 = 22
print(temperatura1 >= temperatura2) # Devuelve True, porque son iguales
print(temperatura1 <= temperatura2) # Devuelve True, porque son iguales
precio1 = 49.99
precio2 = 50.00
print(precio1 >= precio2) # Devuelve False
print(precio1 <= precio2) # Devuelve True
Operador de identidad (is)
Comprueba si dos variables apuntan al mismo objeto en memoria:
lista1 = [1, 2, 3]
lista2 = [1, 2, 3]
lista3 = lista1
print(lista1 == lista2) # Devuelve True, porque tienen los mismos valores
print(lista1 is lista2) # Devuelve False, porque son objetos diferentes en memoria
print(lista1 is lista3) # Devuelve True, porque ambas variables apuntan al mismo objeto
Operador de no identidad (is not)
Comprueba si dos variables no apuntan al mismo objeto en memoria:
a = [1, 2, 3]
b = [1, 2, 3]
c = a
print(a is not b) # Devuelve True, porque son objetos diferentes
print(a is not c) # Devuelve False, porque son el mismo objeto
Operadores lógicos avanzados
Los operadores lógicos nos permiten combinar múltiples condiciones y realizar evaluaciones más complejas.
Operador AND (and)
Devuelve True
si ambas condiciones son verdaderas:
edad = 25
ingresos = 30000
# Comprobar si una persona es mayor de edad y tiene ingresos suficientes
if edad >= 18 and ingresos > 20000:
print("Cumple los requisitos para el préstamo")
# Ejemplo con valores que no cumplen ambas condiciones
edad = 17
ingresos = 30000
if edad >= 18 and ingresos > 20000:
print("Cumple los requisitos para el préstamo")
else:
print("No cumple los requisitos") # Este será el resultado
Operador OR (or)
Devuelve True
si al menos una de las condiciones es verdadera:
tiene_billete = False
es_empleado = True
# Comprobar si una persona puede entrar al evento
if tiene_billete or es_empleado:
print("Puede entrar al evento") # Este será el resultado
else:
print("No puede entrar al evento")
Operador NOT (not)
Invierte el valor booleano:
tiene_permiso = False
print(not tiene_permiso) # Devuelve True
# Ejemplo práctico
esta_cerrado = True
if not esta_cerrado:
print("Podemos entrar")
else:
print("No podemos entrar, está cerrado") # Este será el resultado
Combinación de operadores y prioridad
Podemos combinar múltiples operadores de comparación y lógicos para crear condiciones más complejas:
edad = 25
altura = 175
peso = 70
# Comprobar si cumple los requisitos para una atracción
if (edad > 18 and altura > 160) or (edad > 15 and altura > 170 and peso > 60):
print("Puede subir a la atracción")
else:
print("No cumple los requisitos")
La prioridad de operaciones en Python es la siguiente (de mayor a menor):
- Operadores de comparación (==, !=, >, <, >=, <=)
not
and
or
Si tienes dudas sobre la prioridad, puedes usar paréntesis para hacer explícito el orden de evaluación:
resultado = (a > b) and (c < d or e != f)
Evaluación en cortocircuito
Python utiliza la evaluación en cortocircuito para optimizar las operaciones lógicas:
- En una expresión
and
, si el primer operando esFalse
, el segundo no se evalúa porque el resultado seráFalse
en cualquier caso. - En una expresión
or
, si el primer operando esTrue
, el segundo no se evalúa porque el resultado seráTrue
en cualquier caso.
Esto puede ser útil en situaciones como:
# Si la lista está vacía, no intenta acceder al primer elemento
if len(lista) > 0 and lista[0] == "valor":
print("El primer elemento es 'valor'")
Técnicas avanzadas con operadores lógicos
Operador ternario
Python permite usar una forma condensada de expresión condicional:
# Formato: valor_si_verdadero if condicion else valor_si_falso
edad = 20
estado = "mayor de edad" if edad >= 18 else "menor de edad"
print(estado) # Imprime "mayor de edad"
Encadenamiento de operadores de comparación
Python permite encadenar operadores de comparación de manera intuitiva:
# Comprobar si un número está entre 10 y 20
x = 15
print(10 < x < 20) # Devuelve True
# Equivalente a:
print(10 < x and x < 20) # También devuelve True
# Otro ejemplo
edad = 30
print(18 <= edad <= 65) # Comprueba si la edad está entre 18 y 65 (inclusive)
Uso de all()
y any()
Python proporciona funciones útiles para trabajar con múltiples condiciones:
# all() devuelve True si todas las condiciones son verdaderas
numeros = [10, 20, 30, 40]
print(all(num > 5 for num in numeros)) # Devuelve True porque todos son mayores que 5
print(all(num < 30 for num in numeros)) # Devuelve False porque no todos son menores que 30
# any() devuelve True si al menos una condición es verdadera
print(any(num > 35 for num in numeros)) # Devuelve True porque al menos uno es mayor que 35
print(any(num < 0 for num in numeros)) # Devuelve False porque ninguno es menor que 0
Resumen
Los operadores de comparación y lógicos son fundamentales para crear expresiones condicionales en Python. Permiten evaluar condiciones simples y combinarlas para formar estructuras más complejas que determinan el flujo de ejecución de un programa. Dominar estos operadores es esencial para escribir código eficiente y legible. En el próximo artículo, veremos cómo utilizar estos operadores en estructuras de control como los bucles while
para crear iteraciones controladas por condiciones.