Está en la página 1de 7

Python – Lección 9: Atrapado en el

día de la marmota

Objetivo: presentar la sentencia break, que nos permite abandonar un bucle en


cualquier momento.

En la lección anterior explicamos la estructura while gracias a la cual


podemos repetir en bucle un determinado conjunto de instrucciones.

El funcionamiento era sencillo: evaluábamos una determinada condición y,


si era verdadera, ejecutábamos el bloque completo de instrucciones
indentadas bajo la instrucción while. Una vez hecho esto, reevalúabamos la
condición y, si ésta volvía a ser cierta, repetíamos nuevamente el bloque. Así
sucesivamente, finalizando el bucle en el momento en que la evaluación de
la condición resultara falsa.

Es importante tener en cuenta que, si la condición es verdadera, el conjunto


de instrucciones se ejecutará al completo. Todo si se cumple o nada si no se
cumple.

Pero, ¿y si deseamos abandonar bruscamente el bucle en cualquier


momento sin esperar a que se haya ejecutado el bloque completo o que la
evaluación resulte falsa?

La sentencia break se ocupa de esto. Cuando se ejecuta, se sale


completamente del bucle, sin esperar a su conclusión y sin repetir ninguna
iteración más.

(18) Observa y prueba el siguiente programa:

mayor = 0

while True:
numero = int(input('Introduce un número natural (0 para
terminar): '))
if numero == 0:
break
if numero > mayor:
mayor = numero

print('El número más alto introducido es ', mayor)

Se nos pide que introduzcamos un conjunto de números naturales (enteros


positivos) y se trata de determinar cuál es el mayor de todos ellos. Cuando
no queramos introducir más números escribiremos el valor cero (ajeno al
conjunto de los naturales), momento en el que el programa sabrá que ha
llegado al final y deberá presentar el resultado.

Comencemos observando la sección con el bucle while:

while True:
numero = int(input('Introduce un número natural (0 para
terminar): '))
if numero == 0:
break
if numero > mayor:
mayor = numero

Lo primero que debe llamarnos la atención es la condición que hemos


utilizado. No es una expresión lógica cualquiera.

Las expresiones lógicas dan como resultado dos posibles valores: True o
False (la primera letra ha de escribirse con mayúsculas). Es decir, o son
verdaderas o falsas.

La expresión True, tal como está en el bucle es siempre verdad. No hay


verdad más verdadera que esa. Por lo tanto, su efecto va a ser provocar un
bucle infinito, pues la condición siempre va a ser cierta en cada
reevaluación. Estamos atrapados en un ciclo sin fin; ¿cómo podríamos
escapar de él?

Analicemos con detalle lo que sucede dentro del bucle while:


numero = int(input('Introduce un número natural (0 para
terminar): '))

Introducimos un número, lo convertimos a entero y lo asignamos a la


variable numero que, en la primera iteración, queda así inicializada (un
término relacionado con la programación) con el valor que introduzcamos.

Prosigue el bucle con:

if numero == 0:
break
if numero > mayor:
mayor = numero

Si el número introducido, almacenado en numero, es cero, se ejecuta la


sentencia break.

La sentencia break es drástica: abandona el bucle directamente, sin esperar


a que se repita más veces y sin esperar tampoco a completar el resto de
instrucciones pendientes del bloque.

Estamos ante un bucle controlado por centinela. A través de la variable


numero, estamos atentos, vigilando cuándo se introduce un valor especial
que nos hará salir del bucle. El centinela ha de ser un elemento ajeno al
conjunto posible de valores susceptibles de ser procesados, por eso elegimos
el cero. Habría servido también cualquier entero negativo.

Llegamos al corazón del algoritmo: si el número introducido (numero) es


mayor que el que guarda la variable mayor, hacemos que ésta cambie de
valor con ese otro número. De este modo nos aseguramos que mayor tenga
siempre el mayor de los números que han ido entrando en escena.

Dijimos que todas las variables habían de ser inicializadas antes de poder
utilizar su nombre. Por eso, justo antes de entrar en el bucle while nos
encontramos la línea

mayor = 0
en la que inicializamos la variable mayor con el valor 0.

Si no hubiéramos hecho esto, el programa habría devuelto un error, al


encontrar, dentro del bucle, una variable sin inicializar.

El bucle se repetirá una y otra vez hasta que introduzcamos un cero, valor
que hemos elegido como centinela y que disparará la sentencia break.

Una vez hemos salido del bucle, se ejecuta la última instrucción del
programa, que imprime el resultado buscado:

print('El número más alto introducido es ', mayor)

(19) Diseña un programa en Python que utilice la sentencia break y las


variables sean numéricas.

(20) Diseña otro programa que contenga la sentencia break y las variables
sean string (cadena de caracteres).

Python – Lección 10: Continúe, por


favor

Objetivo: aprender a utilizar la instrucción continue para saltar directamente a la


siguiente iteración en un bucle en Python.

En la lección anterior presentamos la instrucción break, que nos permitía


interrumpir la ejecución de un bucle y salir de él. Ahora aprenderemos la
sentencia continue, muy relacionada con la anterior.
Al igual que break, continue cancela la ejecución de las instrucciones que
quedan pendientes del bucle a partir del mismo momento de su aparición.

Pero, a diferencia de break, que ocasionaba, además, la terminación brusca


del bucle dejando de producirse más repeticiones, continue hace que se salte
inmediatamente a la siguiente repetición. Es decir, vuelve a comprobarse
nuevamente si se cumple la condición y, en caso afirmativo, continúa
ejecutándose el bloque desde el principio otra vez.

(21) Por ejemplo, un programa que nos pida introducir un número. Su


misión será calcular la suma de todo lo que vayamos introduciendo pero
sólo teniendo en cuenta los números pares, ignorando los impares. Presta
mucha atención a las indentaciones que delimitan cada bloque.

suma = 0

while True:
numero = int(input('Introduce un número (0 para
terminar):'))
if numero == 0:
break
if numero % 2 != 0:
continue
suma = suma + numero

print(suma)

Comenzamos inicializando la variable suma, que contendrá la suma final


buscada.

suma = 0

Y nos adentramos en un bucle infinito:


while True:

La condición es cierta siempre, por lo que habrá dotar al programa de


mecanismos para interrumpir el bucle.
Introducimos un número, lo convertimos a entero y lo asignamos a la
variable numero.

numero = int(input('Introduce un número (0 para terminar):'))

Si el número introducido es cero (el valor centinela) rompemos el bucle con la


instrucción break.

if numero == 0:
break

Pero, si no lo es, nos encontramos con el siguiente bloque if, que contiene la
instrucción objeto del artículo de hoy:

if numero % 2 != 0:
continue

El % es el operador módulo, que calcula el resto de una división. Que el resto


de dividir un número entre dos no sea cero significa que el número es impar.

Los números impares, tal como está planteado el problema, debemos


ignorarlos y no tenemos que incluirlos en la suma. ¿Qué hacer?

Continuar, así de simple: deja de ejecutarse lo que queda de bucle y vuelve


otra vez al comienzo, reevaluando la condición. Eso es precisamente lo que
hace la sentencia continue.

Cuando el número introducido es par entonces si se acumulará a la suma


total:

suma = suma + numero

Y así sucesivamente hasta que nos cansemos e introduzcamos el centinela,


momento en el cual se rompe el bucle y se prosigue con la primera sentencia
fuera de él: la impresión del resultado final.
print(suma)

(22) Realizar un programa en Python que utilice la sentencia continue. Tiene


que tener sentido, funcionar y no ser igual o similar al ejemplo visto.

También podría gustarte