lunes, 20 de junio de 2016

Capítulo 42. Python: Estructuras repetitivas: For, While, ¿Do?


Diario de un programador día 87


Estructuras repetitivas. While, Do, For.

En esta clase (que es casi un copy/paste de la anterior), se mostrará la sintaxis de esas estructuras en python. Si se fijan, he tachado la instrucción DO y eso es porque en python no existe esta instrucción. Más abajo se enseñará cómo escribir una estructura similar utilizando la estructura while.
La explicación de esas estructuras fue mostrada en su momento, durante los capítulos 9, 10 y 11, por lo que solamente mostraré su sintaxis, con la finalidad de avanzar rápidamente  para llegar a estudiar lo nuevo que nos ofrece este lenguaje  y ver sus posibilidades.

1.- WHILE
La sintaxis es:
while condicion verdadera:
    instrucciones

Como se puede ver, su construcción es similar a la instrucción IF. Se deben respetar los dos puntos (:) y la indentación, ya que de otra forma, todo lo que está fuera de la indentación se considera fuera de la instrucción.

Ejemplo:

num = 0
while num != 5:
    num = int(input("Ingresa un 5 para continuar: "))
    if num != 5:
        print("Debes ingresar un 5")


print("Numero 5 ingresado, gracias!!!")


Nunca olvidar dejar sangrías o indentación.



Otro ejemplo:

continuar = 1
while continuar == 1:
    edad = int(input("Ingresa tu edad: "))

    if edad >= 18:
        print("Eres mayor de edad")
    else:
        print("Eres menor de edad")

    continuar = int(input("Otro ingreso??\n1 = Si\nOtro numero = No: "))
   
print("Hasta luego!!!")       



2.- DO

Como dije antes, en python no existe esta instrucción, pero hay una forma de obtener el mismo resultado, utilizando la estructura while, mezclado con un if y un break.

Como se ha dicho en clases anteriores, la gracia de esta instrucción, es que siempre se ejecute al menos una vez. Aquí un ejemplo de cómo lograr esto (también hay otras formas):

Ejemplo:

while True :
    num = int(input("Ingresa un 5 para continuar: "))

    if num != 5:
        print("Debes ingresar un 5")

    if num == 5:
        break
   
print("Numero 5 ingresado, gracias!!!")


La primera línea, "while True:" hace que el bucle siempre se ejecute (al igual que la estructura do). Una vez dentro del bucle, se necesita de una condición que lo haga finalizar. Esa condición se encuentra al final de la estructura (al igual que la estructura do). Para lograr esto, se utiliza una condición IF que contenga la condición para finalizar y dentro de esa instrucción, se coloca la palabra clave "break", la cual permite salir de un bucle (que también puede ser un bucle for)
En este ejemplo, el programa solicita al usuario que ingrese un número 5, si el usuario no ingresa ese número, entonces el bucle se vuelve a iniciar. Si el usuario ingresa un 5, entonces se ejecuta el break y se sale del bucle while. Ya fuera del bucle, ejecuta la siguiente línea, que es una instrucción print "Numero 5 ingresado, gracias!!!"

A continuación mostraré el programa "la maldición del 13" para mostrar el uso en ambos casos:

while True :
    print("Si ingresas un 13, algo malo puede ocurrir")
    num = int(input("Yo recomiendo ingresar cualquier otro numero: "))

    if num != 13:
        print("Estamos a salvo del 13")

    if num == 13:
        while num == 13:
              print("Has caido en la trampa Ja ja ja")

    print("Has salido sano y salvo de la maldicion del 13")
    continuar = int(input("Quieres continuar?\n1 = Si\nOtro numero = No: "))
    if continuar != 1:
        break
       
print("Hasta luego!!!")       


Este programa muestra ambas casos,  si el usuario ingresa el número 13,  caerá en un ciclo infinito XD, pero aquí la gran diferencia. Puede que el usuario jamás ingrese el número 13 y por lo tanto, esa estructura nunca se ejecute, lo que hace la diferencia entre ambos casos.

3.- FOR

La sintaxis es:

for variable in range(N):
                instrucciones

Al igual que las otras instrucciones, esta también ejecutará todo lo que esté dentro de la indentación o sangría y como siempre, no olvidar los dos puntos (:)
Esta instrucción FOR, ejecuta una serie de ciclos dentro de un rango "range" Ese rango está determinado por el número representado por la N. Con esta instrucción, el primer número de la variable será siempre un cero y el número final será N - 1. Por ejemplo si N es igual a 10, entonces el último número será N - 1, o sea 9. Un ejemplo sencillo:

for i in range(10):
    print(i)

Esto muestra lo siguiente:


10 ciclos partiendo desde 0 y terminando en 9

Si  por algún motivo se necesita que el primer valor de la variable sea un número distinto de cero, entonces se puede colocar en el paréntesis el valor inicial con el cual se desea iniciar y seguidamente, separado por una coma, el número final. Ejemplo.

for i in range(1,11):
    print(i)

Esto imprime lo siguiente:


Adicionalmente se puede agregar un número más, el cual indica el incremento o decremento del valor de la variable. En el ejemplo anterior, la variable fue incrementando su valor de uno en uno hasta llegar a 10. Si adicionalmente se agrega un dos por ejemplo, el incremento irá de dos en dos. Ejemplo:

for i in range(1,11,2):
    print(i)

Esto imprime lo siguiente:


El siguiente ejemplo, muestra una tabla de multiplicar según el número que ingrese el usuario:

num = int(input("Ingresa un numero: "))
for i in range(1,11):
    print(num, " x ", i, " = ", num * i)

Esto imprime algo como esto:


Hasta la próxima lección!!!


Gustavo J. Cerda Nilo
Enero 2016, última actualización Junio 2016




1 comentario:

C++ El apuntador This

El apuntador This En C++, cada objeto tiene acceso a su propia dirección a través de un puntero o apuntador denominado This. Lo...