Loops

Introducción

Algo que debe haber notado: nuestros programas a menudo muestran repeticiones. Python posee un concepto poderoso, hace uso del llamado looping (ciclos, o en herga iteraciones), el cual podemos usar para acortar el código repetitivo! Por ahora intente este fácil ejemplo:

for name in "John", "Sam", "Jill":
    print("Hello " + name)

Esto es increíblemente útil si queremos hacer algo muchas veces — por ejemplo, dibujar las líneas borde individuales de una figura — pero solo queremos escribir la acción una vez. Acá hay otra versión de un loop:

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

Note como escribimos una sola línea de código usando i, pero este toma 10 valores diferentes?

La función range(n) puede ser considerado un atajo para 0, 1, 2, ..., n-1. Si quiere saber más acerca de ella , puede usar la ayuda en la consola de Python escribiendo help(range). Use la tecla q para salir de la ayuda.

Puede también hacer un ciclo entre los elementos que escoja:

total = 0
for i in 5, 7, 11, 13:
    print(i)
    total = total + i

print(total)

Escriba el siguiente ejemplo y ejecútelo con Python, verifique que funciona como usted esperaba.

Nota

Note como arriba, las líneas de código que han sido iteradas, son las que estan indentadas. Esto es un concepto importante en Python - es así como sabe que líneas deben ser usadas en el loop for, y que viene después, como parte del resto del programa. Use cuatro espacios (presionando Tab) para indentar el código.

Algunas veces querrá repetir algún código un número de veces, pero no le importa el valor de la variable i; entonces puede ser una buena práctica reemplazarla con _. Esto significa que no nos interesa este valor, o no lo queremos usar. Acá hay un ejemplo simple:

for _ in range(10):
    print("Hello!")

Puede o no importarle la variable i - por qué es usada todo el tiempo arriba? bueno, simplemente representa “índice” y es uno de los nombres más comunes de variables encontrados en códigos. Pero si está haciendo un ciclo sobre otra cosa que no sean números, asegurese de darle un mejor nombre! Por ejemplo:

for drink in list_of_beverages:
    print("Would you like a " + drink + "?")

Esto es claro de forma inmediata y se comprende mejor que si hubiésemos usado i en vez de drink.

Dibujando una línea discontínua

Ejercicio

Dibuje una línea discontínua. Puede mover la tortuga sin que esta dibuje su movimiento usando la función turtle.penup(); para que vuelva a dibujar, use la función ``turtle.pendown().

_images/dashed.png

Solución

for i in range(10):
    turtle.forward(15)
    turtle.penup()
    turtle.forward(5)
    turtle.pendown()

Bonus

¿Puede hacer que los trazos se hagan cada vez más largos mientras la línea progresa?

_images/dashedprogressing.png

Consejo

Se siente perdido? Revise i en cada iteración del ciclo:

for i in range(10):
    print(i)
    # write more code here

Puede utilizar i — comúnmente llamada la variable índice o variable del loop — para incrementar los tamaños de los trazos?

Comentarios

En el ejemplo de arriba, la línea que parte con un # es llamada comentario. En Python, cualquier cosa que vaya en una linea después de un # es ignorado por el computador. Use comentarios para explicar que hace su programa, sin cambiar el comportamiento para el computador. Se pueden usar también para fácil y temporalmente deshabilitar o “comentar” algunas líneas de código.

Los comentarios pueden ir también al final de una línea, por ejemplo:

turtle.left(20)     # tilt our next square slightly

Cuadrados más Eficientes

Ejercicio

Los cuadrados que hemos dibujado al comienzo de este tutorial tienen un montón de líneas de código repetidas. ¿Puede escribir un programa que dibuje cuadrados en menos líneas, utilizando loops?

Solución

for _ in range(4):
    turtle.forward(100)
    turtle.left(90)

Bonus

Intente anidar loops, poniendo uno justo bajo (dentro) el otro, con algo de código de dibujo que se encuentre dentro de ambos. Acá puede ver cómo puede lucir:

for ...:
    for ...:
        # drawing code inside the inner loop goes here
        ...
    # you can put some code here to move
    # around after!
    ...

Reemplace los ... con su propio código, y vea si puede obtener algo divertido o interesante! Errores son estimulantes!