En Python contamos con los siguientes operadores lógicos:

and   (y)

or    (o)

not   (no)

Los operadores lógicos nos permiten agrupar condiciones simples en una estructura condicional, esto nos facilita la implementación de algoritmos más compactos y comprensibles.

Cuando unimos dos condiciones simples con el operador lógico 'and' ambas condiciones deben verificarse como verdaderas para que la condición compuesta se verifique verdadera. Por ejempo si tenemos que mostrar un mensaje si la edad de una persona está comprendida entre 12 y 18 años podemos plantearla con una única estructura condicional:

if edad>=12 and edad<=18:
    print 'Edad comprendida entre 12 y 18' 

Estamos diciendo si la variable 'edad' tiene un valor mayor o igual a 12 y además la variable edad tiene un valor menor o igual a 18 luego ejecutar la rama del verdadero.

La condición anterior nos evita tener que implementar dos estructuras condicionales:

if edad>=12:
    if edad<=18:
        print 'Edad comprendida entre 12 y 18' 

El operador lógico 'or' hace que con que alguna de las condiciones sea verdadera luego ejecute el bloque del verdadero.

if x1<5 or x2<5:

Se ejecuta la rama del verdadero si al menos una de las dos variables es menor a 5.

El operador not invierte el valor de una condición:

if not x1>x2:

Si x1 no es mayor a x2 luego ejecuta la rama del verdadero de la estructura condicional.

Podemos plantear condiciones con más de dos condiciones simples:

if x1<0 or x2<0 or x3<0:

Si x1 o x2 o x3 tienen un valor inferior a cero luego se ejecuta la rama del verdadero del if.

Problema resuelto

Generar tres números aleatorios y luego imprimir el mayor de los tres. Emplear condiciones compuestas donde sea posible.



Problema Propuesto

Generar 3 números aleatorios entre 1 y 100. Mostrar un mensaje si todos son superiores a 10.


import random

x1=random.randint(1,100)
x2=random.randint(1,100)
x3=random.randint(1,100)
print x1
print '-'
print x2
print '-'
print x3
print '
' if x1>10 and x2>10 and x3>10: print 'Todos los valores son superiores a 10'
Ver solución