Bucle for en python

De ChuWiki

Veamos aquí algunos ejemplos de cómo se hacen los bucles for en pyton

Concepto general de bucle for en python[editar]

En python un bucle for tiene la siguiente sintaxis

for variable in iterable:
   # Hacer algo con variable

¿Qué es iterable?. En python es cualquier cosa sobre la que se pueda iterar, como listas, tuplas, cadenas de caracteres, etc, etc. En general, es cualquier objeto python con un método __iter__() que devuelva un iterator

Algunos ejemplos simples de bucle for[editar]

En el siguiente código se muestran ejemplos simples de colecciones sobre las que se puede iterar en un bucle for

# lista
for a in [1,2,3]:
    print(a)

# rango, imprime 0,1,2
for a in range(3):
    print(a)

# tupla
for a in (1,2,3):
    print(a)

# string
for a in "hola":
    print(a)

# dict. Imprime las claves "one", "two", "three"
for a in {"one":1, "two":2, "three":3}:
    print(a)

Algunos ejemplos de for más elaborados[editar]

Un fichero[editar]

Un fichero también es iterable, leyendo sus líneas. El siguiente código va escribiendo las líneas del fichero una a una.

# file
file = open("algun-fichero.txt","r")

for line in file:
    print (line, end="")
    
file.close()

Lo de end="" es que cada línea leída del fichero incluye su propio fin de línea y print() añade otro más, por lo que saldrían en pantalla las líneas separadas por una línea en blanco entre ellas (dos retornos de carro al final de cada una). Esta es la forma de indicar en python cual queremos que sea el carácter de fin de línea.

Clave y Valor de un dicccionario[editar]

Para el caso de los diccionarios, podemos usar un ejemplo más elaborado de bucle for, en el que se meten la clave y el valor en dos variables distintas

# dict. Más elaborado, imprime clave y valor.
# Se meten clave y valor en a y b respectivamente
for a,b in {"one":1, "two":2, "three":3}.items():
    print("key={}, value={}".format(a,b))

Hemos usado el método format() de str para sacar clave y valor en un formato adecuado en pantalla.

Rango con valor inicial, final y paso[editar]

Con range() podemos poner tres parámetros: el valor inicial, el valor final y el incremento o paso entre cada iteración

# Rango más elaborado. De 4 a 10 de dos en dos
for a in range(4,10,2):
    print(a)   # Imprime 4,6,8 (excluye 10).

break y continue en bucle for[editar]

En cualquier momento podemos interrumpir el bucle for sin más que llamar a break. El siguiente ejemplo itera sobre la tupla de números sacándolos por pantalla hasta que encuentra un número par, terminando en él.

for a in (1,3,5,3,5,7,6,4,2):
    if (a%2==0):  # Si es par, termina el bucle
        break
    print(a)

Igualmente, podemos saltarnos el resto del código dentro del bucle for y pasar a la siguiente iteración sin más que llamar a continue. El siguiente código sólo escribe en pantalla los números pares

for a in (1,3,5,3,5,7,6,4,2):
    if (a%2==0):
        continue # Si es par, saltamos a la siguiente iteración sin terminar esta.
    print(a)

Es un ejemplo tonto, bastaría también poner el if de otra manera y el print(a) dentro, pero lo hacemos así para mostrar lo que hace continue

Enlaces[editar]