9 de marzo de 2015

Curso de Python para biólogos - Lección 3. Data comparison and conditional statements

Comenzamos la semana con una nueva lección de Python, todavía no quedan un par de lecciones de conceptos básicos antes de empezar a hacer algún pequeño programa para resolver problemas biológicos. En la presente lección explicaremos cómo se pueden comparar datos y condicionar la ejecución del código de acuerdo a dichas comparaciones.



Expresiones booleanas

Una expresión booleana es una comparación entre 2 valores o variables que devuelve un resultado de cierto (true) si ambos valores son iguales o ambas variables contienen el mismo valor y falso (false) si son diferentes. True y false son los dos únicos valores de otro tipo de datos llamado booleano (pero no queremos explicar más tipos de datos, con los ya vistos es suficiente: números, cadenas, listas y diccionarios).

Operadores de comparación y lógicos

Se denominan operadores de comparación a las expresiones mostradas en la imagen (==, !=, <, >, <= y >=), permiten realizar comparaciones de dos valores o variables con 2 únicos posibles resultados: true o false.
Los comparadores lógicos son 'and', 'or' and 'not' y permiten combinar diferences comparaciones. En la tabla se muestran los posibles resultados. 'and' da como resultado true si todas las comparaciones son ciertas y false si una de ellas es falsa. 'or' devuelve true si al menos una de las comparaciones es cierta y false si todas son falsas. 'not' cambia el resultado de una comparación de true a false o al contrario.
 Veamos unos ejemplos:

Sentencias condicionales

Una sentencia condicional decide si se ejecuta o no el código indentado que le sigue a continuación, si la comparación es cierta el código se ejecuta, si es falsa no sucede nada. Las sentencias condicionales se escriben con el operador 'if' seguido de una comparación y termina con dos puntos ':'. En las siguientes líneas se escribe el código indentado con espacios o tabulador (recomendado 4 espacios). El código indentado sólo se ejecutará si la comparación da como resultado true.
Las sentencias condicionales se pueden hacer más completas añadiendo condiciones con el operador 'elif'. Si la primera condición (con 'if') no se cumple, se pasará a comprobar si se cumple la segunda (con 'elif') y así sucesivamente hasta que se agoten las condiciones. Si todas las comparaciones con 'if' y 'elif' son falsas, entonces se ejecutará el código especificado por el operador 'else'.
Para usar las sentencias condicionales con listas, o con valores de diccionarios (recordar dict.values() devuelve una lista de los valores asociados a las claves y dict.keys() devuelve una lista de todas las claves) existe la expresión if in :. Dicha expresión permite buscar un valor en una lista y si lo encuentra ejecuta el código indentado. Es una expresión muy útil que usaremos en futuras lecciones.

Condicionales anidados

Para terminar por hoy veremos une ejemplo donde hay una combinación de comparaciones y operadores lógicos muy larga y que hace confuso el código (lo que también propicia errores al escribirlo, por ejemplo si nos dejamos un paréntesis). El mismo código se puede escribir introduciendo unas sentencias condicionales dentro de otras, el código es más largo, pero también más claro y conciso. Cada sentencia condicional que se escribe debe ser indentada, si escribimos una sentencia condicional dentro de otra deberemos indentar el doble de espacios.

Próxima lección

En la próxima lección veremos como pedir al usuario que introduzca datos y cómo realizar bucles 'while'.


2 comentarios: