Buscar (Don't Edit)

lunes, 11 de febrero de 2013

Aprendiendo a Programar con Python III: Booleanos e Instrucción IF


¡Hola de nuevo! Vaya si ha pasado algo de tiempo desde nuestro último tutorial, culpo plenamente a mi mala administración de actividades y tiempo, y es que durante estos días he tenido que lidiar con bastantes cosas en el trabajo, y... bueno, dejemos de hablar de mí, y hablemos de programación, mas concretamente de Python. Para éste tutorial he preparado lo básico en cuanto al uso de tipos booleanos y una de las sentencias mas utilizadas dentro de nuestros desarrollos: la sentencia IF. Espero que nuestra ausencia no haya demeritado sus ganas de aprender y se hayan oxidado, por el contrario esperamos que hayan trabajado por su lado y logrado mucho mas aprendizaje por ustedes mismos que del que obtuvieran con este tutorial, al fin y al cabo un programador se cultiva solo, y esta es tan solo una manera de acompañarlos en su viaje. El tutorial tras el salto...


Booleanos en Python
El tipo booleano, bool en Python, tiene dos valores: Verdadero (True) y Falso (False).

Operadores de comparación
Los operadores de comparación toman dos valores y producen un valor booleano.
Descripción
Operador
Ejemplo
Resultado
Menor que
< 
5 < 6
True
Mayor que
> 
5 > 6
False
Igual a
==
5 == 6
False
Mayor o igual que
>=
5 >= 6
False
Menor o igual que
<=
5 <= 6
True
Diferente a
!=
5 != 6
True


Operadores lógicos
También existen tres operadores lógicos que producen valores booleanos: andor, y not.
Descripción
Operador
Ejemplo
Resultado
Negación
not
not (80 >= 50)
False
Conjunción
and
(80 >= 50) and (70 <= 50)
False
Disyunción
or
(80 >= 50) and (70 <= 50)
True


Tabla de verdad and 
El operador and evalúa como verdadero o True si y solo si, ambas expresiones son verdaderas.
expresion1
expresion2
expresion1 and expresion2
True
True
True
True
False
False
False
True
False
False
False
False


Tabla de verdad or
El operador or evalúa como verdadero o True, si y solo si, al menos una expresión es verdadera.
expresion1
expresion2
expresion1 or expresion2
True
True
True
True
False
True
False
True
True
False
False
False


Tabla de verdad not
El operador not evalúa a verdadero o True, si y solo si, la expresión es falsa o False.
expresion1
not expresion1
True
False
False
True

TIP: Si queremos hacer una doble negación como por ejemplo: not not (4 == 5), podemos simplificarlo de la siguiente manera 4 == 5.

Precedencia para operadores lógicos
El orden de precedencia para operadores lógicos es:
Operador
Precedencia
Not
Más alto
And
Or
Más bajo

Podemos controlar la precedencia mediante el uso de paréntesis, los cuales también pueden usarse para otorgar mayor legibilidad.
Ejemplo: El operador not es aplicado antes del operador or en el siguiente código:

Podemos utilizar paréntesis para hacerlo más legible:(not calif1 >= 70) or (calif2 >= 70).
O también podemos usar los paréntesis para cambiar el orden de las operaciones: not ((calif1 >= 70) or (calif2 >= 70)).

Conversiones entre int, str y float

str
La función pre-construida str toma cualquier valor y retorna una cadena representando ese valor.

int
La función pre-construida int toma una cadena que contiene solo números enteros y retorna el int que representa. La función int también convierte valores float a enteros quitando la parte fraccionaria.
Si la función int es llamada con una cadena que no contenga solamente números enteros, nos aparecerá un ValueError.

float
La función pre-construida float toma una cadena que contenga solo dígitos y cero o un punto decimal y retorna el numero flotante que representa. La función float también convierte valores int a float.

Si la función float es llamada con una cadena que no puede ser convertida, aparecerá un ValueError.

Importando Módulos con Import
Python contiene muchas funciones, pero no todas ellas están disponibles inmediatamente como lo están las funciones pre-construidas. En lugar de eso, algunas funciones están guardadas en diferentes módulos.  Un módulo es un archivo que contiene funciones y sentencias definidas.

En programación es posible que definamos nuestros propios módulos con nuestras propias funciones.
Import.

Para poder tener acceso a las funciones de un módulo, tenemos que importar ese módulo. La forma general de una sentencia de importación es:

import nombre_modulo

Para tener acceso a una función dentro de un módulo, usaremos:

nombre_modulo.nombre_funcion

Por ejemplo, podemos importar el módulo math y llamar a la función sqrt:

También podemos importar nuestros propios módulos, por ejemplo, si queremos usar las funciones de areas.py (que creamos en el primer tutorial) en otro módulo, tendremos que hacer lo siguiente import areas. Se recomienda tener el módulo a importar en el mismo directorio que el módulo importador.

La Sentencia if
Las sentencias If son usadas para controlar que instrucciones serán ejecutadas. La forma general es:
EJEMPLO 1
if expresion1:
    instruccion1

EJEMPLO2
if expresion1:
    instruccion1
else:
    instruccion2

EJEMPLO3
if expresion1:   
    instruccion1
elif expresion2:     
    instruccion2
else:                 
    instruccionN

elif puede ser usado en vez de "else if", para formar una cadena de condiciones.

Al ejecutar una sentencia if se evalúa cada expresión de arriba hacia abajo. Si una expresión es evaluada como True, se ejecutarán las instrucciones de esa cláusula y se saltará el resto de sentencias if.  Si existe un else, y ninguna de las expresiones evalúa a True, entonces se ejecutarán las instrucciones de ése elsePor ejemplo, dada la función:

Lo probamos en el Shell: 
IF’s y las buenas prácticas

if no requeridos
Es común en los nuevos programadores escribir código como el siguiente:

Esto funciona, pero es estilísticamente cuestionable.  Además de que codificamos más de lo necesario.

numero%2 == 0 es una expresión que por sí misma evalúa a True o False, por lo que ésta expresión puede ser usada junto con la sentencia return:

if-elif vs. if-if
Una sentencia if con una cláusula elif es una sentencia simple. Las expresiones son evaluadas de arriba hacia abajo hasta que una evalué a True o hasta que ya no queden expresiones por evaluar.  Cuando una expresión evalúa a True, las instrucciones asociadas a ella se ejecutan y la sentencia if termina. Cualquier expresión subsecuente es ignorada. Por ejemplo:
   
La condición de la sentencia if (calif1 >= 80) evalua a True, por lo que la instrucción asociada con ese if se ejecuta y la sentencia termina. La condición de la sentencia elif ni siquiera es evaluada.
Es posible que varias sentencias if aparezcan una tras otra en un programa. A pesar de esto son completamente independientes entre ellos y es posible que las instrucciones de cada if sean ejecutadas. Por ejemplo:
    
En el código anterior, la condición asociada con la primer sentencia if(calif >=80) evalúa a True, por lo que las instrucciones asociadas a él se ejecutan. La condición asociada con la segunda sentencia if(calif >= 90) también evalúa a True, por lo que las instrucciones asociadas a él también son ejecutadas.
   
If’s anidados
Es posible colocar una sentencia if dentro del cuerpo de otra sentencia if. Por ejemplo:
  
La sentencia anterior puede ser simplificada eliminando un poco de la anidación. El primer mensaje es mostrado solo cuando ambas condiciones son True. El segundo mensaje es mostrado únicamente cuando la primer condición evalúa a True y la segunda condición evalúa a False. Lo siguiente es equivalente al código anterior:
Hasta aquí el tercer tutorial de esta serie, a partir de ahora prometo adentrarnos más en instrucciones y no tanto en tipos (considero que hemos visto los fundamentales, de ser necesario veremos algún otro como parte de algún ejercicio), y de ésta manera podremos pisar un poquito el acelerador y empezar a tratar temas mas interesantes. Pero bueno, ya llegaremos a eso, mientras por la punta del iceberg tenemos que empezar ¿o no?

¡Saludos!

No hay comentarios.:

Publicar un comentario