Presentamos nuestra primera estructura de control. Normalmente la computadora empieza con el primer renglón y sigue hacia abajo. Las estructuras de control cambian el orden de ejecución de las declaraciones o deciden si una cierta declaración será ejecutada. Vea a continuación el código para un programa que utiliza la estructura de control while:
a = 0
while a < 10:
a = a + 1
print a
Y esta es la emocionante respuesta del programa:
1
2
3
4
5
6
7
8
9
10
(¿Acaso pensó que transformar su computadora en una calculadora de cinco dólares era lo peor que podía pasar?) ¿Qué hace este programa? Primero ve la declaración a = 0 y hace a igual a cero. Luego ve while a < 10: y la computadora revisa si a < 10. La primera vez la computadora ve quea es igual a cero así que es menor a 10. En otras palabras, mientras a sea menor a 10 la computadora ejecutará las declaraciones con sangría.
He aquí otro ejemplo del uso de while:
a = 1
s = 0
print 'Escriba números para añadir a la suma.'
print 'Escriba 0 para salir del programa.'
while a != 0 :
print 'Suma en este momento:',s
a = input('Numero? ')
s = s + a
print 'Suma Total =',s
La primera vez que ejecuté este programa Python imprimió en la pantalla:
File "suma.py", line 3Había olvidado poner : despues del while. El mensaje de error indicaba el problema y dónde pensaba que estaba el error.
while a != 0
^
SyntaxError: invalid syntax
Después de arreglar el problema esto es lo que hice con el programa:
Escriba números para añadir a la suma.
Escriba 0 para salir del programa.
Suma en este momento: 0
Numero? 200
Suma en este momento: 200
Numero? -15.25
Suma en este momento: 184.75
Numero? -151.85
Suma en este momento: 32.9
Numero? 10.00
Suma en este momento: 42.9
Numero? 0
Suma Total = 42.9
Note cómo print 'Suma Total =',s solamente es ejecutado al final. La declaración while afecta solamente los renglones con sangría (con margen izquierdo más al centro de la página). El símbolo != significa "no es igual" así que while a != 0 : significa "ejecuta las declaraciones con sangría hasta que el valor de a sea cero.
Ahora que tenemos rizos while, es posible tener programas en ejecución para siempre. Un modo muy fácil de hacerlo es escribiendo un programa como siguiente:
while 1 == 1:
print "Auxilio, estoy atrapado en un rizo."
Este programa imprimirá en la pantalla Auxilio, estoy atrapado en un rizo. hasta la muerte térmica del universo o hasta que usted mismo lo pare. El modo para detenerlo es oprimir las teclas Control (or Ctrl) y `c' (la letra) simultáneamente. Esto matará el programa (Nota: a veces será necesario usar la tecla Enter después de Control-C.)
Fibonnacci.py
#Este programa calcula la serie de Fibonacci
a = 0
b = 1
conteo = 0
conteo_max = 20
while conteo < conteo_max:
conteo = conteo + 1
#Necesitamos guardar 'a' desde que la cambiamos
a_anterior = a
b_anterior = b
a = b_anterior
b = a_anterior + b_anterior
# Note que la , al final de la declaracion print evita
# que comience un nuevo renglon
print a_anterior,
Respuesta del programa:
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
Claveacceso.py
# Espera a que capture la clave de acceso. Use control-C para salir del programa
# sin la clave de acceso
# Note que esta no debe ser la clave de acceso de modo que
# el rizo while sea ejecutado por lo menos una vez.
clave = "fubar"
#note que != significa 'no es igual'
while clave != "unicornio":
password = raw_input("Clave:")
print "Bienvenido"
Muestra:
Clave:auo
Clave:y22
Clave:password
Clave:open sesame
Clave:unicornio
Bienvenido