Python (Parte 5) – Sentencias de control de flujo (2)

por | 11 octubre, 2016

Este artículo dará continuación a nuestra explicación sobre «Sentencias de control de flujo (1)» donde expusimos el uso de sentencias ‘if/else/elif‘,  ‘for‘ y ‘while‘. Las sentencias que revisaremos con ejemplo en esta entrada serán las siguientes:

  • def
  • try, except, finally

1. Sentencia ‘def’

Antes de definir esta sentencia es preciso tener claro el concepto de «función«, una función es un conjunto de líneas o un bloque de código que realiza una tarea específica y que puede retornar un valor. Las funciones son utilizadas para descomponer grandes problemas en tareas simples y repetitiva. Es recomendable definir funciones sobre bloques de código que vamos a usar en repetidas ocasiones, de este modo simplificaremos nuestras aplicaciones y su mantenimiento.

La sentencia «def» nos permitirá definir funciones de usuario, como indicábamos estas funciones serán bloques de código independientes a las que daremos uso cuando consideremos oportuno.

A continuación os mostraremos varios ejemplos e incrementaremos su complejidad poco a poco, en estos ejemplos plantearemos la situación o condición  y a continuación su interpretación en Python.

  • Ejemplo 1:

Requisito en texto: Definir función que nos indique el mayor entre dos números que recibirá como argumentos de entrada, en caso de ser iguales devolverá el valor del primer argumento de entrada.

Python:

def MiPrimeraFuncion(PrimerNumero, SegundoNumero):

if PrimerNumero > SegundoNumero:

return PrimerNumero

elif PrimerNumero < SegundoNumero:

return SegundoNumero

else:

return PrimerNumero

Resultado = MiPrimeraFuncion(10, 15)

print (Resultado)

  • Ejemplo 2:

Requisito en texto: Averiguar el valor de una posición concreta en la «sucesión de Fibonacci«. El número de posición será informado como argumento de entrada y su valor resultante será devuelto por la función para posteriormente imprimirlo por pantalla. La «sucesión de Fibonacci« es la sucesión de números que, empezando por la unidad,  cada uno de sus términos o posiciones es la suma de los dos anteriores.

Python:

def fibonacci(n):

a = 0

b = 1

c = 0

for i in range (n-1):

c = a + b

a = b

b = c

return (a)

Resultado = fibonacci (5)

print (Resultado)

Nota: Este es uno de los modos más sencillos de calcular este número fibonacci, los puristas preferirán el uso de una función recursiva, con asignaciones de variables del tipo a,b = b, a+b y otras opciones, sin embargo, este tutorial pretende enseñar sin excesivos dolores de cabeza y de ahí el motivo de alargar ligeramente el código.

2. Sentencias ‘try/except/finally’

Las sentencias try/except/finally nos permitirán controlar errores de nuestro código y, por decirlo de algún modo, buscar una vía de escape más o menos controlada en caso de que se produzcan. Normalmente los errores son debidos a errores la sintaxis del código o a situaciones que el programador no tuvo en cuenta. Por ejemplo, si nuestro programa suma números y quien lo usa introduce letras es más que probable que se muestre un mensaje de error nada bonito.

Para muestra, un botón.

  • Ejemplo con error:

Requisito en texto: Reutilizaremos nuestra función «MiPrimeraFuncion» pero en esta ocasión introduciremos en su invocación letras en sus parámetros.

Python:

def MiPrimeraFuncion(PrimerNumero, SegundoNumero):

if PrimerNumero > SegundoNumero:

return PrimerNumero

elif PrimerNumero < SegundoNumero:

return SegundoNumero

else:

return PrimerNumero

Resultado = MiPrimeraFuncion(«tralara», 15)

print (Resultado)

La respuesta será semejante a esta:

if PrimerNumero > SegundoNumero: TypeError: ‘>’ not supported between instances of ‘str’ and ‘int’

Ay dios mio que horror! y ahora que hago!?….. tranquilos que todo en la vida tiene solución salvo la versión española de «cheers».

Para controlar errores o excepciones en nuestro código utilizaremos las sentencias a las que está dedicado este punto. Estas sentencias funcionan en conjunto del siguiente modo:

  • try: Tras esta sentencia o clausula definiremos el bloque de código que deseamos controlar.
    • Si no se produce un error el bloque de código será ejecutado hasta el final.
    • Si se produce un error el bloque de código parará su ejecución en el punto del error y dará un salto al código definido dentro de la clausula «except«.
  • except: El bloque de código contenido en esta sentencia se ejecutará al producirse un error en el bloque de código contenido en la clausula «try«. Existen distintos tipos de excepciones predefinidas, no obstante, para nuestro manual usaremos la más sencilla.
  • finally: Por último, tras la ejecución del bloque de código «except«, será ejecutado el bloque de código contenido en la sentencia o clausula «finally«. Esta clausula opcional es ejecutada para llevar a cabo una limpieza de variables, mensajes finales,…
  • Ejemplo 1:

Requisito en texto: Provocar un caso de error dividiendo 1 entre 0 para mostrar distintos mensajes en las sentencias «except» y «finally«. En caso de no existir error únicamente será mostrado el mensaje definido tras la sentencia «finally«.

Python:

def funcionError():

try:

x = 1/0

except:

print(‘Error controlado’)

finally:

print(‘Mensaje de finalización de código’)

funcionError()

Con este artículo finalizamos nuestro curso introducción a Python, esperamos no haber sido demasiado «espesos» y que os sirva de ayuda como base en el futuro.

Listado de artículos relacionados:

Artículo 1: Introducción
Artículo 2: Operadores
Artículo 3: Variables
Artículo 4: Tipos de datos
Artículo 5: Sentencias de Control (1)
Artículo 6: Sentencias de Control (2)

logo_sexy

Comparte esta página! Email this to someone
email
Share on Facebook
Facebook
0Tweet about this on Twitter
Twitter
Share on LinkedIn
Linkedin

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.