11.1 Operador ternario
En Python existe un operador llamado ternario, que en esencia
representa una versión modificada del operador if
else
.
Supongamos que tienes el código:
if a < b:
min = a
else:
min = b
Para que un código tan simple no ocupe mucho espacio, se ideó una forma compacta de escribirlo. Se verá así:
min = a if a < b else b
El formato general del operador ternario se puede describir de esta forma:
variable = valor1 if condición else valor2
Si condición es verdadera, se asigna valor1 a la variable, si es falsa — valor2.
Nota que aquí no se pone dos puntos (:) después de la condición.
11.2 Operador else en bucles
En Python, el operador else
a menudo se asocia con operadores
condicionales if
. Sin embargo, su uso no se limita a eso, y
else
también se puede aplicar en bucles for
y
while
.
Este aspecto no tan obvio de else
en el contexto de los bucles
puede confundir a los novatos, pero abre posibilidades interesantes para
administrar el flujo de ejecución del programa.
Cómo funciona else
en bucles
En los bucles, else
se ejecuta después de que el bucle termina,
pero solo si el bucle se completó normalmente (es decir, no fue interrumpido
por el operador break
). Esta característica hace que
else
sea útil para escenarios donde necesitas verificar si el
bucle fue interrumpido prematuramente.
Ejemplo de uso en un bucle for
:
for i in range(3):
password = input('Introduce la contraseña: ')
if password == 'secreto':
print('Contraseña aceptada.')
break
else:
print('No hay intentos de entrada o todas las contraseñas introducidas son incorrectas.')
Aquí, else
se activa si el usuario introduce mal la contraseña
tres veces. Si el usuario introduce la contraseña correcta, el bucle se
interrumpe con break
, y el bloque else
no se
ejecuta.
Ejemplo de uso en un bucle while
:
n = 5
while n > 0:
print(n)
n -= 1
else:
print('El bucle terminó normalmente.')
En este caso, else
se ejecuta después de que el bucle haya
terminado de forma natural, ya que la condición se volvió falsa.
Valor práctico
Utilizar else
en bucles puede ser especialmente útil en
algoritmos de búsqueda, donde es necesario determinar si la búsqueda fue
exitosa. Por ejemplo, al buscar un elemento en una lista que no existe,
puedes usar else
para mostrar un mensaje de fallo después de
que el bucle termine.
Usa else
en bucles de manera clara y coherente, para no
confundir a quienes lean tu código. Recuerda que else
en
bucles no siempre es intuitivo, así que vale la pena añadir comentarios o
elegir otras formas de implementar la lógica si eso hace el código más
comprensible.
11.3 Bucles anidados
En Python se puede escribir lógica muy compleja de manera muy compacta. Para algunos casos necesitarás ifs anidados, y para otros, bucles anidados. Ahora vamos a hablar de algunos matices de su funcionamiento:
Un bucle anidado significa tener un bucle dentro de otro. Esto permite, por ejemplo, procesar arreglos multidimensionales, listas de listas u otras estructuras de datos anidadas.
Los bucles anidados consisten en un bucle externo y uno o varios bucles internos. Cada vez que el bucle externo realiza una iteración, el bucle interno se ejecuta por completo:
for i in range(3): # Bucle externo
for j in range(3): # Bucle interno
print(f"({i}, {j})")
Desde el punto de vista del bucle externo, el bucle interno y su contenido son simplemente un bloque de comandos que se ejecutan para cada iteración del bucle externo. Al bucle externo realmente no le importa qué hay dentro de él, cuántos bucles hay, y así sucesivamente. Simplemente ejecuta su bloque de comandos interno cada vez para la variable de su lista.
Vamos a imprimir en pantalla la tabla de multiplicación
: los
bucles anidados son perfectos para esta tarea. Crear una tabla de
multiplicación utilizando bucles anidados, donde un bucle es responsable del
multiplicador y otro del multiplicando:
n = 5
for i in range(1, n + 1):
for j in range(1, n + 1):
print(f"{i} * {j} = {i * j}", end='\t')
print() # Salto a nueva línea para el siguiente multiplicador
Este ejemplo imprimirá en pantalla la tabla:
1 * 1 = 1 1 * 2 = 2 1 * 3 = 3 1 * 4 = 4 1 * 5 = 5
2 * 1 = 2 2 * 2 = 4 2 * 3 = 6 2 * 4 = 8 2 * 5 = 10
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9 3 * 4 = 12 3 * 5 = 15
4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16 4 * 5 = 20
5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25
Para entender mejor los bucles anidados, necesitas simplemente practicar más: esta es la forma más rápida de dominar prácticamente cualquier cosa no obvia en la programación.
GO TO FULL VERSION