Anuncios

Bienvenidos sean a este post, hoy hablaremos sobre tres funciones que disponemos para manipular nuestros bucles.

Anuncios

Break

Esta funcion al igual que en todos los lenguajes nos sirve para salir de un bucle o bloque, en general es simplemente llamarlo para interrumpir completamente lo que estemos haciendo y salir de ahi, para entender mejor el concepto veamos el siguiente ejemplo:

>>> for valor in range(10,0,-1) :
...     if valor == 3 :
...             break
...     print(valor)
... 
10
9
8
7
6
5
4
>>>
Anuncios
Anuncios

En este caso vamos a tomar un bucle for que contara de 10 a 0, esto gracias a range que tendra ese inicio y ese final respectivamente pero para realizar la cuenta regresiva en los pasos usaremos un -1 para que vaya restando, en el bucle for agregaremos un condicional donde verifica que si valor es igual a 3 invocara un break para interrumpir el programa mientras no se cumpla esta condicion se mostrara el valor en pantalla, en la salida podemos ver como nos mostro los valores hasta el 4 porque cuando se cumplio la condicion salio del bucle, esto es el uso de break pasemos al siguiente.

Anuncios

continue

Esta funcion tambien sirve para salir de un bucle pero a diferencia de break este no sale definitivamente sino que sale de la vuelta actual, esta es una buena opcion para omitir unos datos en particular, para entender el concepto vamos a realizar el siguiente ejemplo:

>>> for valor in range(10,0,-1) :
...     if valor % 2 == 1 :
...             continue
...     print(f"El {valor} es un numero par.")
... 
El 10 es un numero par.
El 8 es un numero par.
El 6 es un numero par.
El 4 es un numero par.
El 2 es un numero par.
>>>
Anuncios
Anuncios

En este caso creamos un codigo que solo nos muestra los numeros pares del bucle anterior, volvemos a usar el mismo range pero ahora el condicional verifica si el modulo obtenido de dividir el valor en el iterador por 2 es igual a 1, esto significa que el numero es impar por lo tanto debe usar continue para omitir la siguiente instruccion, la instruccion en cuestion se encarga de mostrar el mensaje donde indica que el numero en valor es un numero par, si vemos la salida solo nos mostrara los numeros pares, si modificamos el condicional de 1 a 0 solo nos mostrara los numeros impares, su utilidad principal es justamente para filtrar cierta informacion en un bucle pero no sale definitivamente como hace break, pasemos al siguiente tema.

Anuncios

else

Esta funcion es parecida a la que vimos en el condicional if pero la aplicaremos al bucle for, donde la usaremos para cuando no se cumple la condicion y devolver una accion, vamos a suponer el siguiente ejemplo:

noelse.py

class ConductorExcepcion(Exception) :
	pass

gente = [('Martin', 17),('Enzo', 15),('Ariel',7),('Javier',13)]
conductor = None
for persona, edad in gente :
	if edad >= 18 :
		conductor = (persona, edad)
		break

if conductor is None:
	raise ConductorExcepcion("Conductor no encontrado")

print(conductor)
Anuncios

Primero creamos una clase que usaremos para devolver una excepcion en caso de que no encontremos lo que buscamos, despues tenemos una lista llamada gente donde almacenaremos el nombre y la edad de cuatro personas, nuestro siguiente paso sera crear una variable llamada conductor a la cual dejaremos vacia con None, despues por medio de un bucle for obtendremos los dos datos, tenemos un condicional donde verificamos si edad es mayor o igual a 18, en caso de ser verdadero asignamos los datos a conductor y salimos de todo con el break, despues tenemos un condicional donde verifica si conductor es igual a None, en caso de ser verdadero invoca a la clase para la excepcion que definimos al principio, por ultimo si no se cumple la condicion mostramos el valor en conductor, si lo ejecutamos veremos esto:

tinchicus@dbn001vrt:~/python$ python3 noelse.py 
Traceback (most recent call last):
  File "noelse.py", line 12, in <module>
    raise ConductorExcepcion("Conductor no encontrado")
__main__.ConductorExcepcion: Conductor no encontrado
tinchicus@dbn001vrt:~/python$
Anuncios

Como pueden ver se ejecuto correctamente, si modificamos alguna de las personas con una edad de 18 o mayor y lo ejecutamos veremos lo siguiente:

tinchicus@dbn001vrt:~/python$ python3 noelse.py 
('Martin', 44)
tinchicus@dbn001vrt:~/python$
Anuncios

Vemos que omitio completamente el condicional que invoca la excepcion y procede a mostrarnos el valor correspondiente, vamos a tomar este ejemplo y lo modificaremos para utilizar el else, cambiemos el nombre del archivo:

else.py

class ConductorExcepcion(Exception) :
	pass

gente = [('Martin',17),('Enzo', 15),('Ariel',7),('Javier',13)]
conductor = None
for persona, edad in gente :
	if edad >= 18 :
		conductor = (persona, edad)
		break

else :
	raise ConductorExcepcion("Conductor no encontrado")

print(conductor)
Anuncios

El codigo es exactamente igual al anterior pero en este caso no tenemos un condicional para verificar a conductor sino un else que esta relacionado al bucle for donde en caso de no ocurrir ninguna situacion procede a llamar a la excepcion, si lo ejecutamos veremos lo siguiente:

tinchicus@dbn001vrt:~/python$ python3 else.py 
Traceback (most recent call last):
  File "else.py", line 12, in <module>
    raise ConductorExcepcion("Conductor no encontrado")
__main__.ConductorExcepcion: Conductor no encontrado
tinchicus@dbn001vrt:~/python$
Anuncios

Es exactamente lo mismo a lo visto anteriormente y si modificamos una edad para que sea mayor o igual a 18 veremos esto:

tinchicus@dbn001vrt:~/python$ python3 else.py 
('Martin', 18)
tinchicus@dbn001vrt:~/python$
Anuncios

Como vemos el codigo sigue funcionando correctamente pero ahora no depende exclusivamente de la variable conductor sino que por otras circunstancias podemos invocarlo y quedo mejor esteticamente, como siempre esto siempre va a quedar a criterio del programador quien aplica lo que cree mas conveniente.

Anuncios

En resumen, hoy hemos visto tres tipos de funciones que nos permiten manipular ya sea desde un bucle a un condicional, hemos visto a break para poder salir de un bucle o bloque, despues vimos como trabaja continue para poder saltar una vuelta de un bucle y por ultimo un else especial que es utilizado para las bucles for, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios
pp258

Donación

Es para mantenimento del sitio, gracias!

$1.00