CAPÍTULO 4 Control de flujo

CAPÍTULO 4 Control de flujo

Todo programa informático está formado por instrucciones que se ejecutan en forma secuencial de «arriba» a «abajo», de igual manera que leeríamos un libro. Este orden constituye el llamado flujo del programa. Es posible modificar este flujo secuencial para que tome bifurcaciones o repita ciertas instrucciones. Las sentencias que nos permiten hacer estas modificaciones se engloban en el control de flujo.

4.1 Condicionales

CAPÍTULO 4 Control de flujo

En esta sección veremos las sentencias if y match-case junto a las distintas variantes que pueden asumir, pero antes de eso introduciremos algunas cuestiones generales de escritura de código.

4.1.1 Definición de bloques

A diferencia de otros lenguajes que utilizan llaves para definir los bloques de código, cuando Guido Van Rossum creó el lenguaje quiso evitar estos caracteres por considerarlos innecesarios. Es por ello que en Python los bloques de código se definen a través de espacios en blanco, preferiblemente 4. En términos técnicos se habla del tamaño de indentación.

Consejo: Esto puede resultar extraño e incómodo a personas que vienen de otros lenguajes de programación pero desaparece rápido y se siente natural a medida que se escribe código.

CAPÍTULO 4 Control de flujo

Figura 1: Python recomienda 4 espacios en blanco para indentar

4.1.2 Comentarios

Los comentarios son anotaciones que podemos incluir en nuestro programa y que nos permiten aclarar ciertos aspectos del código. Estas indicaciones son ignoradas por el intérprete de Python.

Los comentarios se incluyen usando el símbolo almohadilla # y comprenden hasta el final de la línea.

CAPÍTULO 4 Control de flujo

Los comentarios también pueden aparecer en la misma línea de código, aunque la guía de estilo de Python no aconseja usarlos en demasía:

CAPÍTULO 4 Control de flujo

Reglas para escribir buenos comentarios:

  1. Los comentarios no deberían duplicar el código.
  2. Los buenos comentarios no arreglan un código poco claro.
  3. Si no puedes escribir un comentario claro, puede haber un problema en el código.
  4. Los comentarios deberían evitar la confusión, no crearla.
  5. Usa comentarios para explicar código no idiomático.
  6. Proporciona enlaces a la fuente original del código copiado.
  7. Incluye enlaces a referencias externas que sean de ayuda.
  8. Añade comentarios cuando arregles errores.
  9. Usa comentarios para destacar implementaciones incompletas.
4.1.3 Ancho del código

Los programas suelen ser más legibles cuando las líneas no son excesivamente largas. La longitud máxima de línea recomendada por la guía de estilo de Python es de 80 caracteres.

Sin embargo, esto genera una cierta polémica hoy en día, ya que los tamaños de pantalla han aumentado y las resoluciones son mucho mayores que hace años. Así las líneas de más de 80 caracteres se siguen visualizando correctamente. Hay personas que son más estrictas en este límite y otras más flexibles.

En caso de que queramos romper una línea de código demasiado larga, tenemos dos opciones:

1. Usar la barra invertida \:

CAPÍTULO 4 Control de flujo

2. Usar los paréntesis (…):

CAPÍTULO 4 Control de flujo

4.1.4 La sentencia if

La sentencia condicional en Python (al igual que en muchos otros lenguajes de programación) es if. En su escritura debemos añadir una expresión de comparación terminando con dos puntos al final de la línea. Veamos un ejemplo:

CAPÍTULO 4 Control de flujo

CAPÍTULO 4 Control de flujo

Nota: Nótese que en Python no es necesario incluir paréntesis ( y ) al escribir condiciones. Hay veces que es recomendable por claridad o por establecer prioridades.

En el caso anterior se puede ver claramente que la condición se cumple y por tanto se ejecuta la instrucción que tenemos dentro del cuerpo de la condición. Pero podría no ser así. Para controlar ese caso existe la sentencia else. Veamos el mismo ejemplo anterior pero añadiendo esta variante:

CAPÍTULO 4 Control de flujo

Podríamos tener incluso condiciones dentro de condiciones, lo que se viene a llamar técnicamente condiciones anidadas3. Veamos un ejemplo ampliando el caso anterior:

CAPÍTULO 4 Control de flujo

Python nos ofrece una mejora en la escritura de condiciones anidadas cuando aparecen consecutivamente un else y un if. Podemos sustituirlos por la sentencia elif:

CAPÍTULO 4 Control de flujo

Figura 2: Construcción de la sentencia elif

Apliquemos esta mejora al código del ejemplo anterior:

CAPÍTULO 4 Control de flujo

Ejecución paso a paso a través de Python Tutor:
https://cutt.ly/wd58B4t

4.1.5 Operadores de comparación

Cuando escribimos condiciones debemos incluir alguna expresión de comparación. Para usar estas expresiones es fundamental conocer los operadores que nos ofrece Python:

CAPÍTULO 4 Control de flujo

A continuación vamos a ver una serie de ejemplos con expresiones de comparación. Téngase en cuenta que estas expresiones habría que incluirlas dentro de la sentencia condicional en el caso de que quisiéramos tomar una acción concreta:

CAPÍTULO 4 Control de flujo

4.1.6 Operadores lógicos

Podemos escribir condiciones más complejas usando los operadores lógicos:

  • and
  • or
  • not

CAPÍTULO 4 Control de flujo

CAPÍTULO 4 Control de flujo

Véanse las tablas de la verdad para cada operador lógico:

CAPÍTULO 4 Control de flujo

Python ofrece la posibilidad de ver si un valor está entre dos límites de manera directa. Así, por ejemplo, para descubrir si value está entre 4 y 12 haríamos:

CAPÍTULO 4 Control de flujo

Nota:

  1. Una expresión de comparación siempre devuelve un valor booleano, es decir True o False.
  2. El uso de paréntesis, en función del caso, puede aclarar la expresión de comparación. [4] [5]

Ejercicio

Dada una variable year con un valor entero, compruebe si dicho año es bisiesto o no lo es.

Un año es bisiesto en el calendario Gregoriano, si es divisible entre 4 y no divisible entre 100, o bien si es divisible entre 400. Puedes hacer la comprobación en esta lista de años bisiestos.

Ejemplo

  • Entrada: 2008
  • Salida: Es un año bisiesto

«Booleanos» en condiciones

Cuando queremos preguntar por la veracidad de una determinada variable «booleana» en una condición, la primera aproximación que parece razonable es la siguiente:

CAPÍTULO 4 Control de flujo

Pero podemos simplificar esta condición tal que así:

CAPÍTULO 4 Control de flujo

Hemos visto una comparación para un valor «booleano» verdadero (True). En el caso de que la comparación fuera para un valor falso lo haríamos así:

CAPÍTULO 4 Control de flujo

De hecho, si lo pensamos, estamos reproduciendo bastante bien el lenguaje natural:

  • Si hace frío, coge chaqueta.
  • Si no hace frío, usa camiseta.

Ejercicio

Escriba un programa que permita adivinar un personaje de Marvel en base a las tres preguntas siguientes:

1. ¿Puede volar?

2. ¿Es humano?

3. ¿Tiene máscara?

CAPÍTULO 4 Control de flujo

Ejemplo

  • Entrada: can_fly = True, is_human = True y has_mask = True
  • Salida: Ironman

Es una especie de Akinator para personajes de Marvel…

Valor nulo

Nivel intermedio

None es un valor especial de Python que almacena el valor nulo4. Veamos cómo se comporta al incorporarlo en condiciones de veracidad:

CAPÍTULO 4 Control de flujo

Para distinguir None de los valores propiamente booleanos, se recomienda el uso del operador is. Veamos un ejemplo en el que tratamos de averiguar si un valor es nulo:

CAPÍTULO 4 Control de flujo

De igual forma, podemos usar esta construcción para el caso contrario. La forma «pitónica» de preguntar si algo no es nulo es la siguiente:

CAPÍTULO 4 Control de flujo

Publicaciones Similares