Bucles¶
En los capítulos anteriores hemos visto como introducir una sentencia condicional:
n = 5
if n>0:
print(n)
Un bucle consiste en ejecutar el bloque condicional de forma repetida,
mientras se cumpla la condición. Hay que cambiar la palabra if por while:
print("Cuenta atrás:")
n = 5
while n:
print(n)
n -= 1
Al ejecutarse, muestra:
Cuenta atrás:
5
4
3
2
1
A tener en cuenta:
-
Estamos usando una variable "de control" para verificar cuando debe detenerse el bucle.
-
Podríamos escribir:
while n>0 :pero nos estamos aprovechando de que 0 equivale a False
-
¡Importante! No olvidar modificar la variable de control en cada iteración del bucle:
n -= 1Sin ello, el bucle se ejecutaría indefinidamente.
Sentencia break¶
Una sentencia break fuerza que se abandone el bucle y se vaya a las sentencias que hay a continuación:
| Contraseña.py | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
En el ejemplo, si el usuario adivina la contraseña, se deja de preguntarle y se abandona el bucle. Seguidamente, si la variable intentos tiene un valor mayor que cero, significa que hemos salido con break.
Bucles infinitos¶
En el ejemplo anterior, al usuario le damos tres oportunidades para adivinar la contraseña. Podríamos darle un número indefinido de oportunidades mediante:
contraseña = "Hola"
while True:
texto = input("Introduzca contraseña (en blanco para abandonar): ")
if len(texto)==0:
break
elif texto == contraseña:
print("contraseña correcta")
break
else:
print("contraseña incorrecta\n")
if len(texto) > 0:
print("bienvenido")
Cuando en la cabecera de un bucle escribimos:
while True :
la expresión condicional es directamente True, y el bucle se ejecutará indefinidamente. Necesitamos alguna sentencia break para salir.
Sentencia continue¶
Una sentencia continue es similar a break:
-
ambas ignoran el resto de sentencias que quedan dentro del bucle:
while condición: sentencias que se ejecutan break sentencias que se ignoran -
breakabandona las iteraciones, mientras quecontinuefuerza una nueva iteración.
Un ejemplo:
| Impares.py | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 | |
Al ejecutarse, muestra:
1
3
5
7
9
Recordemos que el operador % devuelve el resto de la división.
Si dividimos un número entre 2 y el resto es cero, el número es par.
Sentencias condicionales en el shell¶
Cuando introducimos en el shell una sentencia condicional o un bucle, formados por un bloque de sentencias sangrado, hasta no completar el bloque, se sigue mostrando el prompt secundario. Al finalizar, se ejecuta todo el bloque:
>>> n=5
... while n:
... print(n)
... n -= 1
...
...
5
4
3
2
1
Para indicar el final de la sangría, en el shell necesitamos añadir una línea en blanco. En un programa, estas son decorativas.