Bucles [Python]
While
El bucle while es un bucle que se ejecuta mientras una condición sea verdadera. La sintaxis es la siguiente:
while (condicion) {
// Codigo que se ejecuta mientras la condición sea verdadera
}
Castings implícitos
Cuidado porque Pytohn realiza castings de cualquier tipo a bool, pero pueden no ser siempre intuitivos:
int es false si es 0, y true en cualquier otro caso.
char es false si es el carácter nulo
'\0', y true en cualquier otro caso.float es false si es 0.0, y true en cualquier otro caso.
punteros son false si son
nullptr, y true en cualquier otro caso.string es false si es está vacío, y true en cualquier otro caso.
container (list, set, map) es false si está vacío, y true en cualquier otro caso.
s = "False"
while s: # True
print("Sí se ejecuta")
break
list = []
while list: # False
print("No se ejecuta")
Bucle for
Un bucle for en Python siempre itera sobre una secuencia de elementos.
range
Es el bucle más común. Itera sobre una secuencia de números generados por range, que permite mediante argumentos marcar el inicio, fin y paso de cada iteración.
Los argumentos son:
start: número inicial (por defecto 0)
stop: número final (no incluido)
step: paso (por defecto 1)
En caso de solo tener un argumento, se considera como argumento stop.
# Bucle for de 2 a 10 incluido de 2 en 2
for i in range(2, 11, 2):
# SOME CODE WITH i (2, 4, 6, 8, 10)
Container
Itera sobre los elementos de un contenedor (list, set, dict, etc).
list
l = [1, 2, 3, 4, 5]
for i in l:
# SOME CODE WITH i (1, 2, 3, 4, 5)
set
Cuidado, porque en este caso no se garantiza el orden de los elementos.
s = {1, 2, 3, 4, 5}
for i in s:
# SOME CODE WITH i (1, 2, 3, 4, 5)
dict
d = {1: "uno", 2: "dos", 3: "tres"}
# Iterar sobre las claves
for k in d:
# SOME CODE WITH k (1, 2, 3)
# Iterar sobre los valores
for v in d.values():
# SOME CODE WITH v ("uno", "dos", "tres")
# Iterar sobre las claves y valores
for k, v in d.items():
# SOME CODE WITH k, v (1, "uno"), (2, "dos"), (3, "tres")
enumerate
La función enumerate devuelve un objeto que genera tuplas con el índice y el valor de cada elemento de un contenedor.
l = ["a", "b", "c"]
for i, v in enumerate(l):
# SOME CODE WITH i, v (0, "a"), (1, "b"), (2, "c")
Palabras clave
break
La palabra clave break se utiliza para salir de un bucle. Si se encuentra dentro de un bucle, el bucle se termina inmediatamente.
Cuidado, porque si se encuentra dentro de un bucle anidado, solo se sale del bucle más interno.
while (True):
if (condicion):
break # salir del bucle
continue
La palabra clave continue se utiliza para saltar a la iteración actual de un bucle.
El resto del código dentro del bucle no se ejecuta, y se pasa a la siguiente iteración.
for i in range(10):
if (condicion):
continue # saltar a la siguiente iteracion (i++)
return
La palabra clave return sale de la función y acaba cualquier bucle en el que se encuentre.
while (True):
if (condicion):
return # salir del bucle y de la funcion
Ejemplo
Pongamos un problema que recibe un entero n y suma los números impares menores o igual que n.
Input:
7
Output:
16
n = int(input())
suma = 0
for i in range(n+1):
if i % 2 != 0:
suma += i
print(suma)
n = int(input())
suma = 0
while True:
if n == 0:
break
if n % 2 == 0:
n -= 1
continue
else:
suma += n
n -= 1
print(suma)