Control de flujo en Python: Condicionales y ciclos mientras¶
El control de flujo en programación se refiere a la decisión sobre el orden en que se ejecutan las instrucciones en un programa. En un lenguaje de programación estándar como Python, los tipos de control de flujo incluyen instrucciones condicionales (como if, elif, else), bucles (como for y while), y control de bucles (como break, continue y pass). Estas instrucciones permiten a los desarrolladores controlar cómo y cuándo se ejecutan ciertas partes del código.
Condicional¶
Un condicional en Python es una instrucción que permite ejecutar un bloque de código solo si se cumple una determinada condición.
En Python, se utiliza la palabra clave if seguida de la condición a evaluar.
Si la condición es verdadera, se ejecuta el bloque de código indentado debajo
del if.
1# Este es el inicio del programa
2print('Inicio del programa')
3a = 3 # Asignamos el valor 3 a la variable 'a'
4
5# Aquí comienza la instrucción condicional
6if a == 3: # Si 'a' es igual a 3, entonces la condición es verdadera
7 # Este bloque de código se ejecuta solo si la condición es verdadera
8 print('Dentro del bloque condicional')
9
10# Este es el final del programa
11print('Final del programa')
En este código, primero se imprime “Inicio del programa” y se asigna el valor 3 a la variable a. Luego, se evalúa la condición a == 3. Como a es igual a 3, la condición es verdadera y se imprime “Dentro del bloque condicional”. Finalmente, se imprime “Final del programa”.
Nota
Las identaciones son una parte esencial de la sintaxis de Python. A diferencia de muchos otros lenguajes de programación, Python utiliza la indentación para delimitar los bloques de código.
Un bloque de código comienza con una línea terminada en dos puntos (:) y
continúa con una o más líneas indentadas.
La indentación en Python generalmente se realiza utilizando cuatro
espacios. Aquí tienes un ejemplo utilizando una instrucción if:
1a = 5
2if a > 3:
3 # Este bloque de código se ejecuta si la condición es verdadera
4 print('a es mayor que 3')
En este ejemplo, la línea print('a es mayor que 3') está indentada con
cuatro espacios, lo que indica que es parte del bloque de código que se
ejecuta si la condición a > 3 es verdadera.
Es importante tener en cuenta que Python es muy estricto con la indentación.
Si no se sigue correctamente, Python lanzará un IndentationError.
La instrucción if-else en Python¶
En Python, la instrucción if-else se utiliza para ejecutar un bloque de
código si se cumple una determinada condición, y otro bloque de código si
no se cumple. La palabra clave if se utiliza para definir la condición, y
la palabra clave else se utiliza para definir el bloque de código que se
ejecuta si la condición no se cumple.
Aquí tienes un ejemplo:
1# Este es el inicio del programa
2print('Inicio del programa')
3a = 3 # Asignamos el valor 3 a la variable 'a'
4
5# Aquí comienza la instrucción if-else
6if a == 3: # Si 'a' es igual a 3, entonces la condición es verdadera
7 # Este bloque de código se ejecuta solo si la condición es verdadera
8 print('Dentro del bloque if')
9else:
10 # Este bloque de código se ejecuta solo si la condición es falsa
11 print('Dentro del bloque else')
12
13# Este es el final del programa
14print('Final del programa')
En este código, primero se imprime “Inicio del programa” y se asigna el valor 3
a la variable a. Luego, se evalúa la condición a == 3. Como a es igual
a 3, la condición es verdadera y se imprime “Dentro del bloque if”. Si a no
fuera igual a 3, se imprimiría “Dentro del bloque else”. Finalmente, se imprime
“Final del programa”.
Ejercicio rápido
Modificar el ejemplo, para que se ejecute el bloque de código del else.
Los condicionales anidados en Python¶
En Python, puedes anidar múltiples instrucciones if dentro de una instrucción
if-elif-else para comprobar varias condiciones. La palabra clave if se
utiliza para definir la primera condición, elif se utiliza para definir
condiciones adicionales, y else se utiliza para definir el bloque de código
que se ejecuta si ninguna de las condiciones anteriores se cumple.
Aquí tienes un ejemplo:
1# Este es el inicio del programa
2print('Inicio del programa')
3a = 4 # Asignamos el valor 4 a la variable 'a'
4
5# Aquí comienza la instrucción if-elif-else
6if a == 3: # Si 'a' es igual a 3, entonces la primera condición es verdadera
7 # Este bloque de código se ejecuta solo si la primera condición es verdadera
8 print('Dentro del bloque if')
9elif a == 4: # Si 'a' es igual a 4, entonces la segunda condición es verdadera
10 # Este bloque de código se ejecuta solo si la primera condición es falsa y
11 # la segunda condición es verdadera
12 print('Dentro del primer bloque elif')
13elif a == 5: # Si 'a' es igual a 5, entonces la tercera condición es verdadera
14 # Este bloque de código se ejecuta solo si la primera y la segunda
15 # condiciones son falsas y la tercera condición es verdadera
16 print('Dentro del segundo bloque elif')
17
18else:
19 # Este bloque de código se ejecuta solo si ninguna de las condiciones
20 # anteriores es verdadera
21 print('Dentro del bloque else')
22
23# Este es el final del programa
24print('Final del programa')
En este código, primero se imprime “Inicio del programa” y se asigna el valor 4
a la variable a. Luego, se evalúan las condiciones a == 3 y a == 4. Como a es
igual a 4, la segunda condición es verdadera y se imprime
“Dentro del primer bloque elif”. Una vez que se encuentra una condición válida,
no se realizan más verificaciones de los condicionales.
Si a fuera igual a 5, las dos primeras condiciones no se cumplirían, y se
evaluaría la tercera como verdadera, por lo que se imprimiría
“Dentro del segundo bloque elif”. Si a no fuera igual a 3, 4 ni 5, se
imprimiría “Dentro del bloque else”. Finalmente, se imprime “Final del programa”.
Ejercicio rápido
Modificar el ejemplo, para que se ejecute el bloque de código del
if.Modificar el ejemplo, para que se ejecute el bloque de código del segundo
elif.Modificar el ejemplo, para que se ejecute el bloque de código del
else.
Ejercicios¶
Programa para pintar cuadrado o triangulo: Escribir un programa que solicite al usuario elegir entre dos opciones: cuadrado o triángulo. Luego el programa deberá mostrar una representación estática de la figura seleccionada con asteriscos:
* *** *****
o
*** *** ***
Programa para verificar divisibilidad: Escribir un programa que pida al usuario que ingrese un número, y que verifique si el número ingresado es divisible por 2, 3 o 5 y mostrar el mensaje correspondientes. Por ejemplo:
Ingrese un número: 30 El número es divisible por 2. El número es divisible por 3. El número es divisible por 5.
Programa para ordenar 3 números: Escribir un programa que pida al usuario que ingrese tres números. Utilizando solo condicionales, el programa determinará el orden ascendente y descendente de estos tres números y los mostrará en pantalla. Por ejemplo:
Ingrese tres números: 8, 3, 5 Orden ascendente: 3, 5, 8 Orden descendente: 8, 5, 3
Nota
En el contexto de la programación, los operadores lógicos y, o y no (equivalentes a and, or y not en inglés) son herramientas esenciales para construir expresiones condicionales complejas. Estos operadores permiten combinar múltiples condiciones para formar una única expresión condicional que puede controlar el flujo de un programa. Por ejemplo, si deseamos verificar si un número es divisible por 2 y 3, o no es divisible por 5, podríamos encadenar condiciones de la siguiente manera:
1 numero = int(input("Ingrese un número: "))
2
3 # Utilizando el operador 'y' (and)
4 if numero % 2 == 0 and numero % 3 == 0:
5 print("El número es divisible por 2 y 3.")
6
7 # Utilizando el operador 'o' (or)
8 if numero % 2 == 0 or numero % 3 == 0:
9 print("El número es divisible por 2 o 3.")
10
11 # Utilizando el operador 'no' (not)
12 if not numero % 5 == 0:
13 print("El número no es divisible por 5.")
En este ejemplo, el operador y se utiliza para asegurar que ambas condiciones sean verdaderas antes de ejecutar el bloque de código. El operador o requiere que al menos una de las condiciones sea verdadera, y el operador no invierte el resultado de la condición que le sigue. Estos operadores pueden ser combinados de diversas maneras para satisfacer los requisitos lógicos necesarios en un programa.
Ciclo mientras¶
En la programación, el ciclo «mientras» o «while loop» en inglés, es una estructura de control que permite ejecutar repetidamente un bloque de código mientras una condición dada sea verdadera. La condición se evalúa antes de cada iteración, y si resulta ser falsa, el ciclo se detiene y el flujo del programa continúa con las instrucciones siguientes al ciclo.
Ejemplo¶
1# Este es el inicio del programa
2
3# Inicializamos la variable 'a' con el valor 0.
4a = 0
5
6# Imprimimos un mensaje antes de entrar al ciclo
7print('antes del ciclo')
8
9# Iniciamos un ciclo 'while' que se ejecutará mientras 'a' sea menor que 10
10while a < 10:
11 # Imprimimos el valor actual de 'a'
12 print(a)
13 # Incrementamos el valor de 'a' en 1
14 a = a + 1
15
16# Una vez que el ciclo termina, imprimimos un mensaje después del ciclo
17print('despues del ciclo')
Instrucción Break¶
La instrucción break en Python es una declaración de control de flujo que se
utiliza para terminar inmediatamente el ciclo más interno en el que se
encuentra, ya sea un bucle while o for. Cuando se ejecuta break, el programa
sale del bucle y continúa ejecutando el código que sigue inmediatamente después
del bucle. Es especialmente útil cuando se necesita salir de un bucle antes de
que se complete su condición normal de terminación, por ejemplo, cuando
se encuentra una condición específica o se cumple un caso especial.
Aquí tienes un ejemplo de cómo se utiliza break en un bucle:
1# Inicializamos la variable 'a' con el valor 0
2a = 0
3
4# Imprimimos un mensaje antes de entrar al ciclo infinito
5print('antes del ciclo')
6
7# Iniciamos un ciclo 'while' que se ejecutará indefinidamente
8while True:
9 # Imprimimos el valor actual de 'a'
10 print(a)
11 # Incrementamos el valor de 'a' en 1
12 a = a + 1
13 # Verificamos si 'a' es mayor que 20
14 if a > 20:
15 # Si 'a' es mayor que 20, ejecutamos 'break' para salir del ciclo
16 break
17
18# Una vez que salimos del ciclo, imprimimos un mensaje
19print('después del ciclo')
Pregunta
¿Por qué en el ejemplo anterior tenemos un ciclo infinito?
Instrucción Continue¶
La instrucción continue en Python se utiliza dentro de bucles como for o while
para omitir el resto del código dentro del bucle para la iteración actual y
continuar con la siguiente iteración. Es decir, cuando se ejecuta continue,
el flujo del programa se devuelve inmediatamente al inicio del bucle,
saltándose cualquier código que venga después de continue y que esté dentro
del mismo bucle. Esta instrucción es útil cuando, bajo ciertas condiciones,
queremos evitar que se ejecute parte del código del bucle y continuar con
la siguiente iteración.
Aquí tienes un ejemplo de cómo se utiliza continue en un bucle:
1 # Inicializamos la variable 'a' con el valor 0
2a = 0
3
4# Imprimimos un mensaje antes de entrar al ciclo
5print('antes del ciclo')
6
7# Iniciamos un ciclo 'while' que se ejecutará mientras 'a' sea menor que 10
8while a < 10:
9 # Incrementamos el valor de 'a' en 1 al inicio de cada iteración
10 a += 1
11 # Imprimimos el valor actual de 'a'
12 print(a)
13 # Verificamos si 'a' es un número par
14 if a % 2 == 0:
15 # Si 'a' es par, utilizamos 'continue' para saltar al inicio del ciclo
16 continue
17 # Esta línea solo se ejecuta si 'a' es impar, debido al 'continue' anterior
18 print('a es impar')
19
20# Una vez que el ciclo termina, imprimimos un mensaje después del ciclo
21print('después del ciclo')
Ejercicios¶
Programa para identificar números pares: Diseñe un programa que solicite al usuario ingresar un número entero y luego imprima todos los números pares que sean menores a dicho número.
Programa para calcular la suma de secuencia: Elabore un programa que solicite al usuario un número entero
n. El programa debe calcular la suma de todos los números enteros desde1hastande manera explícita, es decir, sumando cada número individualmente en lugar de aplicar la fórmula de la sumatoria. El objetivo es que el usuario aplique estructuras de control como bucles para realizar la suma.Programa para calcular el factorial: Implemente un programa que pregunte al usuario por un número entero
ny calcule el factorial dena partir de la productoria.Programa para generar la serie de Fibonacci: Cree un programa que solicite al usuario un número entero
ny genere los primerosntérminos de la serie de Fibonacci.Programa para verificar números primos: Desarrolle un programa que pida al usuario ingresar un número entero y determine si es un número primo.
Bucles anidados:¶
Bucles anidados ocurren cuando un bucle se encuentra dentro de otro,
permitiendo realizar tareas repetitivas en múltiples niveles. Por ejemplo,
podríamos querer iterar sobre los elementos de una matriz bidimensional. En
Python, esto se puede lograr utilizando bucles while anidados, donde el bucle
interno completa todas sus iteraciones para cada iteración del bucle externo.
Aquí tienes un ejemplo utilizando bucles while:
1# Inicializamos las variables de control para los bucles externo e interno
2
3i = 1
4max_i = 3
5max_j = 2
6
7# Bucle externo
8while i <= max_i:
9 j = 1
10 # Bucle interno
11 while j <= max_j:
12 print(f"i = {i}, j = {j}")
13 j += 1 # Incrementamos la variable de control del bucle interno
14 i += 1 # Incrementamos la variable de control del bucle externo
Este código imprimirá pares de índices i y j, mostrando todas las combinaciones
posibles dentro de los límites establecidos por max_i y max_j.
Ejercicios¶
Los siguientes ejercicios deben resolverse usando bucles anidados.
Tablero de ajedrez con asteriscos: Escriba un programa que solicite al usuario un número entero
n, que representará tanto la cantidad de filas como de columnas de un tablero de ajedrez. El programa debe imprimir en pantalla un tablero de ajedrez utilizando asteriscos (*) y espacios en blanco ( ). Cada celda del tablero debe alternar entre un asterisco y un espacio, y cada fila debe comenzar con el carácter opuesto al que inicia la fila anterior. Por ejemplo, si la primera celda de una fila comienza con un asterisco, la primera celda de la siguiente fila debe comenzar con un espacio, y viceversa. Si el usuario introduce el número 8, el tablero impreso debe tener el aspecto de un tablero de ajedrez estándar.Programa para imprimir números primos menores a un número dado: Escriba un programa que solicite al usuario ingresar un número entero positivo
n. El programa debe calcular e imprimir todos los números primos que sean menores quen. Para encontrar los números primos menores quen, el programa deberá verificar la divisibilidad de cada número desde2hastan-1y determinar si es primo.Encontrar pares de números que sumen un total específico: Implemente un programa que pida al usuario un número entero
ny luego encuentre todos los pares únicos de números enteros positivos cuya suma sea igual an. Utilice bucles anidados para iterar a través de todas las combinaciones posibles de pares.Patrón de diamante con asteriscos: Cree un programa que pida al usuario un número impar
nque representará la altura máxima del diamante, y luego imprima un patrón de diamante utilizando asteriscos. El programa debe incrementar el número de asteriscos por fila hasta alcanzar la altura máxima en la mitad del patrón, y luego disminuirlos hasta llegar a uno.