Tema 4. Variables Booleanas y Operadores de Decisión

Explicación del uso de Variables Booleanas y Operadores de Decisión en Python 3.

Booleanos

Dato booleano. Es un tipo de dato que solamente puede tomar 2 valores: True (verdadero) o False (falso).

Variable lógica. Variable que almacena datos booleanos.

is_adult = True
type(is_adult)

#RESPUESTA
bool

Observación. Observad que tanto True como False únicamente tienen la primera letra mayúscula. Además, a diferencia de otros lenguajes de programación, como por ejemplo R, Python solamente admite los booleanos escritos de esta forma: True o False.

Tablas de verdad

Dadas dos variables lógicas, A y B, podemos definir los operadores básicos mediante tablas de verdad, donde el valor verdadero se representa con la letra V o bien con un 1, mientras que el valor falso se representa mediante la letra F o bien con un 0.

La tabla de verdad para la variable A sería

A

V

F

La tabla de verdad para la variable B sería

B

V

F

Negación

El operador negación aplicado a una variable (unario) se representa con ¬ y devuelve el valor contrario. Equivalente a NO.

A
¬ A

V

F

F

V

Conjunción

La conjunción entre dos variables se representa con ∧ y devuelve verdadero únicamente cuando ambas variables valen verdadero. Equivalente a Y.

A
B
A ∧ B

V

V

V

V

F

F

F

V

F

F

F

F

Disyunción

La disyunción entre dos variables se representa con ∨ y devuelve verdadero cuando al menos una de las variables lógicas vale verdadero. Equivalente a O.

A
B
A ∨ B

V

V

V

V

F

V

F

V

F

F

F

Operadores lógicos en Python

Para hacer la negación, utilizamos el operador not.

Para hacer la conjunción entre dos variables lógicas, utilizamos el operador and.

Para hacer la disyunción entre dos variables lógicas, utilizamos el operador or.

Operadores de comparación

En Python podemos comparar datos y obtener un resultado booleano. Los operadores de comparación disponibles son

Operador
Significado

>

Estrictamente mayor

Mayor o igual

<

Estrictamente menor

Menor o igual

==

Igual

!=

Diferente

Observación. Observad que cuando hemos comparado el número 7 en formato integer y en formato float, hemos obtenido que eran iguales, mientras que al haber comparado el número 7 en formato integer con el mismo número, pero en formato string, nos ha devuelto que son diferentes. Esto lo que nos viene a decir es que numéricamente, Python considera iguales los números enteros tanto si están en formato integer como en formato float. No obstante, nunca considerará iguales dos datos donde uno esté en formato numérico y el otro, en formato string.

Múltiples comparaciones simultáneas

Podemos realizar múltiples comparaciones a la vez.

Supongamos que tenemos que tener 16 años o más, pero como mucho 40 para poder concertar una entrevista y aspirar a ser miembros de la tripulación del pirata Pyratilla.

Queremos saber si nos concederá una entrevista si tenemos 17 años.

Hemos obtenido True, por tanto podemos concertar una entrevista. Que nos admita o no en su tripulación tras la entrevista, eso ya es otra cosa.

Comparaciones de strings

No solamente podemos comparar datos numéricos, sino que también podemos comparar strings en relación al orden alfabético. Como lo ordenaría un diccionario

El resultado que obtenemos no se debe a que Mallorca sea mejor que Dubai, sino a que la primera letra de la primera palabra, M, no se encuentra antes en el abecedario que la primera letra de la segunda palabra, D.

Observación. En caso de que la primera letra de cada una de las palabras comparadas coincidan, se comparan los caracteres que se encuentran en la siguiente posición. En caso de empate, seguiríamos comparando los caracteres de la tercera posición y así sucesivamente.

Más métodos de string

El método .startswith() nos devuelve verdadero si el string empieza con el caracter o la cadena de caracteres indicado.

Observación. Como podéis observar, Python diferencia entre letras en mayúscula y letras en minúscula. Por eso es que obtenemos falso al preguntar si el string empieza por m, en vez de M.

El método .endswith() nos devuelve verdadero si el string acaba con el caracter o la cadena de caracteres indicado.

El método .isalnum() nos devuelve verdadero si todos los caracteres del string son alfanuméricos.

¡Cuidado! No se consideran caracteres alfanuméricos los siguientes: espacio en blanco, !, %, ?, & y un largo etcétera.

El método .isalpha() nos devuelve verdadero si todos los caracteres del string son del alfabeto.

El método .isdigit() nos devuelve verdadero si todos los caracteres del string son dígitos.

El método .isspace() nos devuelve verdadero si todos los caracteres del string son espacios en blanco.

El método .islower() nos devuelve verdadero si todos los caracteres del string están en minúscula.

El método .isupper() nos devuelve verdadero si todos los caracteres del string están en mayúscula.

El método .istitle() nos devuelve verdadero si todas las palabras del string empiezan en mayúscula y el resto de las letras de la palabra están en minúscula.

Operadores de decisión

if

Cuando queremos comprobar si se cumple alguna condición, utilizamos el operador de decisión if. SOLO SE EJECUTA SI EL RESULTADO DE LA CONDICIÓN ES TRUE. La sintaxis que debemos seguir es la siguiente:

¡Cuidado! La sintaxis de los dos puntos después de la condición y la indentación (equivalente a una tabulación, un total de 4 espacios en blanco) que precede a la consecuencia es muy importante. De hecho, si se omite alguna de las dos cosas o bien nos pasamos de indentación, nos saltará error.

  • Si queréis hacer una tabulación, debéis pulsar el tabulador una vez.

  • Podéis hacer tabulaciones en bloque seleccionando las líneas de código que queráis indentar y, a continuación, pulsando el tabulador.

  • Podéis deshacer tabulaciones pulsando Shift + Tab

  • Podéis deshacer tabulaciones en bloque seleccionando las líneas de código que queráis desindentar y, a continuación, pulsando el Shift + Tab.

Siguiendo con nuestro ejemplo, si el usuario tiene más de 16 años, pero menos de 40, entonces puede formar parte de la tripulación de Pyratilla.

EJERCICIO 1:

else

Ahora, nos podríamos preguntar qué le podríamos decir al usuario en el caso en que no satisfaga la condición. Ahí es donde entra en juego el operador de decisión else. SOLO SE EJECUTA SI LA CONDICIÓN ARROJA FALSE. Esta vez, la sintaxis a seguir es la siguiente:

Siguiendo el ejemplo anterior, si el usuario tiene 16 años o más, pero menos de 40, entonces puede formar parte de la tripulación de Pyratilla. Si no, le diremos que no satisface una necesidad básica para ser miembro.

EJERCICIO 2: Ecuaciones de primer grado

elif

Ahora, en vez de comprobar si se cumple o no una condición, nos podríamos preguntar cómo haríamos para comprobar más de una condición. Podríamos hacerlo a lo bruto anidando operadores if, esto es, metiendo un if dentro de otro; o bien, podríamos hacerlo utilizando el operador de decisión elif.

El operador elif funciona del siguiente modo: se empieza con un operador if; si la condición de este no se cumple, pasamos a la siguiente condición posible precedida de un elif; si esta tampoco se cumple, pasamos al siguiente elif; seguimos así hasta que o bien se satisface alguna condición y realizamos su consecuencia, o hasta llegar al else, que implica que no se ha satisfecho ninguna de las condiciones anteriores.

La sintaxis del operador de decisión elif es la siguiente:

Recuperemos el ejemplo de que tenemos que tener 16 años o más, pero menos de 40 para ser miembros de la tripulación del pirata Pyratilla. Vamos a mejorar lo que habíamos conseguido con el if y el else, añadiendo el operador elif.

Además, veremos que nos dice con la edad de 20 años.

El funcionamiento del código anterior es el siguiente:

  • El if comprueba si la edad introducida es mayor a 40.

  • El elif comprueba si la edad se encuentra en el intervalo [16, 40]

  • El else implica que la edad introducida es menor a 16

Operador ternario

Si queremos hacer un simple if / else en una sola línea de código, podemos utilizar el operador ternario, que tiene la siguiente estructura:

Por ejemplo, hagamos el caso de mayor de edad. Si la edad es mayor o igual a 18, entonces es mayor de edad en España. Si no, entonces es menor de edad en España.

EJERCICIO 3: Numero par o impar

EJERCICIO 4: Punto dentro de cuadrado

Vamos a comprobar si un punto del plano euclidiano de la forma (x,y) pertenece o no al cuadrado unidad.

El cuadrado unidad es el que tiene por vértices los puntos (0,0) , (0,1) , (1,0) y (1,1)

Operadores Anidados

EJERCICIO 5: Año bisiesto

REPASO

Last updated