Saltar a contenido

Combinando condiciones

Hay veces que necesitamos indicar:

si se cumple la condici贸n 1 y la condici贸n 2 a la vez:
    hacer la tarea

lo que puede resolverse mediante:

if condicin 1 :
    if condicin 2 :
        hacer tarea

otras sentencias

Es decir, si la condici贸n 1 falla, no nos molestamos en comprobar la condici贸n 2, porque deben cumplirse ambas a la vez.

De todas formas, es m谩s f谩cil escribir:

if condicin 1 and condicin 2 :
    hacer tarea

lo que combina dos condiciones en una sola expresi贸n.

Operadores booleanos

Los operadores booleanos son aquellos cuyos operandos son booleanos:

True and True = True
True and False = False
False and False = False

Veamos un ejemplo:

CondicionesAnd.py
1
2
3
4
5
a = 20
b = 33
c = 40
if b > a and c > a:
    print("Ambas condiciones se cumplen")

Vemos que el operador and toma dos operandos, cuyo valor ha de ser Verdadero o Falso.

Los operadores de comparaci贸n, como es el caso de >, tienen prioridad sobre los booleanos, por lo que se eval煤an antes:

if b > a and c > a:

El operador or, solo obliga a que alguna (o ambas) de las condiciones se cumpla:

CondicionesOr.py
1
2
3
4
5
a = 20
b = 33
c = 40
if b > a or a > c:
    print("Al menos una de las condiciones se cumple")

Es decir:

True or True = True
True or False = True
False or False = False

El operador not

El operador not se antepone a una condici贸n, y sirve para invertirla. Si la condici贸n es verdadera, el conjunto es falso, y viceversa:

if not condicin :
    sentencias

Por ejemplo

a = 33
b = 20
if not a > b:
    print("a no es mayor que b")

Es decir:

 not True = False
 not False = True

En general, el uso de not suele resultar algo confuso, y generalmente es preferible usar otra combinaci贸n de operadores operador. En lugar de:

if not a > b

podemos escribir

if a <= b

pero en condiciones complejas, puede resultar 煤til:

if not (a>b and c==b)

lo que significa "si no se dan ambas condiciones..."

Los operadores and, or y not son conocidos como booleanos, porque sus operandos son valores booleanos.

Cortocircuito

Si combinamos dos condiciones:

if condicin 1 and condicin 2 :
    hacer tarea

... a veces basta con evaluar el primer operando para saber el resultado final. En el ejemplo, si no se cumple la condici贸n 1, no es necesario evaluar la condici贸n 2, ya que el resultado final va a ser False de todas formas.

En este caso, Python no va a evaluar la segunda condici贸n, lo que se conoce como cortocircuito. Otro ejemplo:

if condicin 1 or condicin 2 :
    hacer tarea

Vemos que, si se cumple la primera condici贸n, ya sabemos que el resultado final va a ser True.

Si las condiciones son expresiones que incluyen la llamada a una funci贸n, hay que tener en cuenta que es posible que la funci贸n no sea invocada. Si la funci贸n realiza una tarea importante (como modificar una variable o guardar datos en disco), esa tarea podr铆a quedarse sin realizar.