Estructuras de datos y de control (I)
Índice.
- Modos de ejecución
- Tipos lógicos
- Operadores relacionales
- Operadores lógicos
- if
- else
- if, elif, else
- Lógica booleana
Antes de arrancar con estos nuevos tópicos, ampliaremos algunos conceptos trabajados en los encuentros anteriores y agregaremos algunas ideas nuevas.
Modos de ejecutar programas
El intérprete interactivo es útil cuando queremos probar pequeños fragmentos de código en tiempo real, ahora bien, cuando cerramos lo cerramos perdemos toda la información allí trabajada. Entonces no es recomendado para escribir programas largos. Los IDE son una buena herramienta para desarrollar rápidamente el código pero no para ejecutarlo, al menos no de manera una forma estándar, es decir abriendo una terminal y llamando al comando.
Ejecutar un programa desde la línea de comando.
La idea es crear un archivo de extensión .py. Esto lo podemos hacer con un IDE o bien con un editor de texto plano (nano, vim, gedit, etc). Suponiendo que armamos el clásico “hola mundo!” y lo guardamos en un archivo de nombre “holamundo.py” podemos hacer lo siguiente:
|
|
Ejecutarlo como un script
Cuando ejecutamos un programa Python como un script evitamos llamar explícitamente al intérprete. Debemos agregar en la primera línea del código
|
|
Dicha línea le dice al sistema operativo que llame al intérprete para ejecutar el código. Luego debemos darle permisos de ejecución.
|
|
Y finalmente lo podemos ejecutar como cualquier programa GNU/Linux
|
|
Datos tipo lógicos o booleanos (boolean).
Anteriormente hemos visto tres tipos de datos: float, int y string. Hay un tipo nuevo que es el tipo lógico comúnmente llamado booleano.
Recuerde que: una variable booleana puede tener solo dos valores posibles, o verdadero (True) o falso (False).
|
|
|
|
Ahora bien, este tipo de dato es muy útil ya que nos permite realizar operaciones lógicas, es decir comparar datos bajo un cierto criterio, observemos el siguiente código:
|
|
|
|
En el código le hemos asignado a la variable “c” el resultado de una operación lógica (100 > 1). Python identifica que esto es una operación lógica y devuelve un tipo booleano. En este caso devuelve True. A continuación, veremos en profundidad como se construye una operación lógica.
Operadores de relación u operadores relacionales
En el ejemplo anterior trabajamos una operación (100>1) y nos devolvió True (Verdadero). ¿Por que? Porque las operaciones booleanas pueden ser pensadas como una pregunta y esa pregunta puede ser respondida con True (verdadero) o False (Falso).
Si hiciéramos:
|
|
Estamos preguntando ¿100 es mayor que 1? la respuesta es True (verdadero) La siguiente tabla presenta los operadores booleanos que Python tiene disponible.
Operador | Descripción | Ejemplo | Resultado |
---|---|---|---|
== | ¿a y b son iguales? | 100 == 1 | False |
!= | ¿ a y b son distintos? | 100 != 1 | True |
< | ¿a es menor que b? | 100 < 1 | False |
> | ¿a es mayor que b? | 100 > 1 | True |
<= | ¿a es menor o igual que b? | 100 <= 1 | False |
>= | ¿a es mayor o igual que b? | 100 >= 1 | True |
Estos operadores pueden ser usados con cadenas de caracteres, por ejemplo si queremos saber si dos oraciones son idénticas usamos el operador correspondiente.
|
|
|
|
En este ejemplo estamos preguntando ¿“Hola” es igual que “Mundo”? y guardando el resultado de esa operación en la variable “c”. En este caso la respuesta es False (falso). Para que nos hubiera dado verdadero ambas partes necesitaban ser idénticas.
|
|
|
|
Como vimos podemos también comparar números. ¿Qué ocurre si queremos saber si 10 es menor que 2 por 2? Podríamos hacer lo siguiente:
|
|
Operadores Lógicos
Los operadores lógicos nos permiten unir dos o más operaciones lógicas. Imaginemos que quisiéramos saber si alguien tiene más de 21 años y menos que 65. ¿Cómo haríamos? Tendríamos que hacer dos operaciones, la primera preguntar si es mayor que 21 y la segunda, si es menor que 65. Luego necesitaríamos saber si ambas respuestas son verdaderas. Para ayudarnos en esta tarea aparecen los operadores lógicos. Observemos el siguiente ejemplo:
|
|
|
|
Analicemos: Hicimos dos comparaciones edad > 21 y edad < 65, ambas comparaciones dan Verdadero, luego esas comparación fueron “unidas” con el operador and. Este operador devuelve verdadero si todas las comparaciones son verdaderas, si alguna es falsa devuelve falso.
En la siguiente tabla se muestran los operadores lógicos disponibles y un resumen de ellos.
Operador | Descripción | Ejemplo | Resultado |
---|---|---|---|
and | ¿Son a y b verdaderos? | 100 > 2 and 100 > 50 | True |
or | ¿Es a o b verdadero? | 100 > 2 or 100 > 1000 | True |
not | Invierte el resultado de la operación | not (1<2) | False |
Veamos un ejemplo con el operador and:
|
|
|
|
Preguntamos si “¿b es menor que a?” (Verdadero), si “¿c es mayor que a?” (Verdadero) y luego verifica si ambas preguntas son verdaderas (Verdadero)
Ahora con el operador or:
|
|
|
|
Primero resuelve si ¿a es mayor que 1000? (Verdadero), luego ¿b es mayor que 100? (Falso) y finalmente se pregunta: ¿alguno de los dos resultados es verdadero?"
Por ultimo el operador not
|
|
Se pregunta: ¿a es mayor que b? Falso, luego invierte el resultado es decir lo convierte a Verdadero.
Sentencia If
La declaración if (Si) es útil en aquellos momentos que queremos evaluar una condición y que, si esta es verdadera, ejecute un fragmento de código.
La sintaxis de if es la siguiente
|
|
Por ejemplo: queremos evaluar si el valor de una variable es mayor que el de otra variable.
|
|
Explicación: Creamos dos variables “a” y “b”. Le asignamos valores a cada una de ellas. Luego evaluamos “si a es mayor que b”, si la evaluación es verdadera se lanza la función print que imprimirá en pantalla “A es mayor que B”. Si es falsa no hará nada.
Nótese el espacio vació antes del llamado a la función print(). Esto es conocido como Indentación.
Todo lo que este indentado se ejecutará si la evaluación es verdadera. Recuerde, además, que la expresión if finaliza con : (dos puntos)
Sentencia else
Una sentencia if (si) puede estar sucedida por una sentencia else (sino). Vayamos a un ejemplo práctico: imaginemos que queremos mostrar un mensaje si es mayor de edad y sino otro mensaje distinto.
|
|
Explicación: la sentencia if evalúa si el valor de la variable edad es mayor o igual que 21, si es verdadero muestra el mensaje “Es mayor de edad”, sino se ejecuta el segundo mensaje “Es menor de edad”.
Sentencias múltiples: if, elif, else
Supongamos que queremos mostrar un mensaje distinto según un número dado.
|
|
La sentencia elif nos brinda la posibilidad de hacer una evaluaciones adicionales.
El programa primero evalúa if numero == 5: si verdadero ejecuta print(“El numero es cinco”) si es falso evalúa elif numero == 10: si verdadero ejecuta print(“El numero es diez”) si es falso ejecuta print(“El numero no es ni cinco ni diez”)
Lógica booleana
La lógica booleana nos permite hacer evaluaciones mediante la sentencia if pero de mayor complejidad.
Operador and
El operador and (“y” en español) nos permite realizar dos o más evaluaciones, si todas son verdaderas se ejecutará el código que le indiquemos.
|
|
Como las evaluaciones para nombre y edad son verdaderas ejecuta el mensaje “Ud. es Pablo y tiene 42 años de edad”.
Recuerde que todos los argumentos evaluados deben ser verdaderos para que se ejecute el bloque que se le indica.
Operador or
El operador or (“ó” en español) permite realizar dos o más evaluaciones, pero a diferencia del and, en este caso basta con que alguno de ellos sea verdadero para que ejecute el bloque.
|
|
Operador not
El operador not invierte el resultado de una operación lógica.
|
|
Notas sobre los operadores lógicos
Recuerden que siempre que realicemos evaluaciones es buena idea usar paréntesis para señalar, como en matemáticas, lo primero que se debe evaluar.
Ejemplo
|
|
En el ejemplo anterior, evalúa primero el contenido del paréntesis (a == 1 or b == 1) y luego el que queda afuera (and c == 1) , finalmente evalúa el operador and.