Semana 5: Condicionales y Ciclos (For
y While
)#
En este punto ya hemos definido las diferentes operaciones aritméticas, hemos asignado valores numéricos, booleanos y cadenas de caracteres a variables. Ahora, al igual que como lo hacíamos cuando creábamos nuestros pseudo-códigos, definiremos condicionales y ciclos en Python.
from IPython.display import YouTubeVideo
YouTubeVideo('0VW6ez_ukho')
5.1. Condicionales#
Un condicional es una sentencia que nos permite verificar si se cumple una condición, y establecer dos posibles ejecuciones de acuerdo a si se cumple o no la condición. En un diagrama de flujo, se vería como sigue:
Referencia de Python sobre condicionales
5.1.1. Sentencia if
#
Permite dividir el flujo de un programa en diferentes caminos u opciones. El bloque de código dentro del condicional if
se ejecuta siempre que la condición sea True.
Ejemplo:
if True:
print("Esto siempre se va a imprimir")
print("Ya estamos fuera del if")
if False:
print('Esto nunca se va a imprimir')
print("Ya estamos fuera del if")
Esto siempre se va a imprimir
Ya estamos fuera del if
Ya estamos fuera del if
Ejemplo: Números mayores o menores que otros.
a=35
b=100
if a<b:
print("a es menor que b")
if a>b:
print("a es mayor que b")
a es menor que b
5.1.2. Sentencia else
#
La declaración else
es una estructura de control de flujo que se utiliza junto con la declaración if
o la declaración elif
. Si todas las condiciones en las declaraciones if
y elif
son falsas, se ejecuta el bloque de código dentro de la declaración else. La declaración else es opcional y sólo se ejecuta si no se cumple ninguna de las condiciones anteriores.
Ejemplo: Determinar si un número es par o impar
n = 83
if n%2 == 0:
print("El número es par")
else:
print("El número es impar")
El número es impar
5.1.3. Sentencia elif
#
La declaración elif
es una extensión de la declaración if
que permite verificar múltiples condiciones en una sola estructura de control de flujo. Si la condición en la declaración if
es falsa, se verifica la siguiente condición en la declaración elif
. Si se cumple la condición, el bloque de código dentro del elif se ejecuta. Si la condición es falsa, se omite el bloque de código y se verifica la siguiente condición en la siguiente declaración elif
o en la declaración else
.
Ejemplo:
edad = 30
if edad >= 18:
print("Usted es mayor de edad")
else:
print("Usted es menor de edad")
Usted es mayor de edad
Ejemplo:
if edad >= 18:
print("Usted es mayor de edad")
elif 0<= edad < 18 :
print("Usted es menor de edad")
else:
print("La edad ingresada es erronea")
Usted es mayor de edad
Ejemplo:
a = 5
if a >= 2:
print("El número es mayor que 2")
if a >= 3:
print("El número es mayor que 3")
El número es mayor que 2
El número es mayor que 3
Si no ponemos el elif
, se ejecutan ambos condicionales. Con el elif
, solo entra a la segunda condición si no se cumple la primera. En este ejemplo es claro que \(a\geq2\) y \(a\geq3\), pero solo se imprime que el número es mayor o igual que dos.
a = 5
if a >= 2:
print("El número es mayor que 2")
elif a >= 3:
print("El número es mayor que 3")
El número es mayor que 2
5.2. Ciclos#
5.2.1. Ciclo for
#
El ciclo for
es una esctructura de ciclo usada en los casos donde conozco los elementos o la cantidad de elementos a iterar.
Referencia de Python sobre la sentencia for
La sintaxis para definir un ciclo for
es:
# i es la variable que va a cambiar en el ciclo.
# La variación será desde a hasta b-1, con un paso igual a c.
for i in range(0,10,1): # a=0, b=10, c=1
print(i)
0
1
2
3
4
5
6
7
8
9
Ahora, un ciclo for
con un incremento de 2. Este ciclo toma solo los números pares entre 2 y 19.
#Otro ejemplo de ciclo
for i in range(2,20,2):
print(i)
2
4
6
8
10
12
14
16
18
Para definir el ciclo for
, no es necesario especificarle el extremo inferior del intervalo ni el incremento. Si estos no se especifican, por defecto se supondrá que el argumento de la función range será (0,19], con un incremento de 1.
#Otro ejemplo de ciclo
for i in range(20):
print(i)
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Nota: En python los contadores por defecto inician desde 0 y terminan en \(n-1\)
#Nuevo tipo de variable usada para asignar valores al contador
type(range(10))
range
5.2.2. Ciclo while
#
El ciclo while
se basa en repetir un bloque de códigos a partir de una condición establecida. El bloque while
se ejecutará siempre y cuando el resultado de la condición sea True
.
Referencia de Python sobre la sentencia While
Ejemplo: ciclo infinito
"""
while True: #Ciclo infinito
print("Hola")
"""
'\nwhile True: #Ciclo infinito\n print("Hola")\n'
Ejemplo Este ciclo se ejecutará tantas veces como la diferencia entre 0 y el número \(n\) que se le pide al usuario que ingrese, aunque es un ciclo while
. Esto dado que la ciondición establecida fue que \(i \leq n\). \(i\) se actualiza aumentando su valor en 1 en cada iteración.
n = 10
i = 0
while i <= n:
print(i)
i+=1
0
1
2
3
4
5
6
7
8
9
10
Ejemplo: Al tener el ciclo while
una condición para ejecutarse, se puede usar directamente en él una sentencia else
, que se ejecutará solo cuando se deje de cumplir la condición del ciclo. Esto es: no es necesaria la sentencia if
en este caso.
n = 10
i = 0
while i <= n:
print(i)
i+=1
else:
print(f'El ciclo termino en la iteración {i-1}')
0
1
2
3
4
5
6
7
8
9
10
El ciclo termino en la iteración 10
Ejemplo: Ejecución de un ciclo while
hasta que el ususario ingrese una clave. La clave es “Salir”.
'''
comando = ''
while comando != 'Salir':
comando = input('Ingrese un comando: ')
print(comando)
'''
"\ncomando = ''\nwhile comando != 'Salir':\n comando = input('Ingrese un comando: ')\n print(comando)\n"
5.2.3. Operadores break
, continue
y pass
#
Estos operadores son útiles para el contro de flujo de ciclos.
La instrucción break
sirve para “romper” el ciclo.
Ejemplo:
indice = 0
while True:
if indice == 10:
break
indice += 1
print(indice)
1
2
3
4
5
6
7
8
9
10
Ejemplo:
for i in range(0,100):
print(i)
if i == 3:
break
0
1
2
3
Ejemplo: Ciclo que se enbcarga de verificar los residuos y con ello determinar si un número es primo o no.
n = 3
primo = True
for i in range(2,n):
if n%i == 0:
primo = False
break
print(primo)
True
La instrucción continue
sirve para “saltarse” la iteracción actual sin romper el ciclo.
Ejemplo:
for i in range(0,12):
if i==5 or i>10:
print(f"la iteración {i} se salto")
continue
print(i)
0
1
2
3
4
la iteración 5 se salto
6
7
8
9
10
la iteración 11 se salto
La instrucción pass
no hace nada cuando se cumple, sin embargo es de gran ayuda en la construcción de programas.
Ejemplos:
if i >10:
pass
if i > 10:
print("Hola")
else:
pass
Hola
for i in range(10):
pass
for i in range(10):
if i == 5:
print("i = 5")
pass
print(i)
0
1
2
3
4
i = 5
5
6
7
8
9
5.3. Ejercicios#
Una juguetería tiene mucho éxito en dos de sus productos: payasos y muñecas. Se suele hacer venta por correo y la empresa de logística les cobra por peso de cada paquete así que deben calcular el peso de los payasos y muñecas que saldrán en cada paquete a demanda. Cada payaso pesa \(112\, \text{g}\) y cada muñeca \(75\, \text{g}\). Escribe un programa que lea el número de payasos y muñecas vendidos en el último pedido y calcule el peso total del paquete que será enviado.
Una panadería vende barras de pan a \(3.49\) euros cada una. El pan que no es horneado el mismo día tiene un descuento del 60%. Escribe un programa que comience leyendo el número de barras vendidas que no son del día. Después el programa debe mostrar el precio habitual de una barra de pan, el descuento que se le hace por no ser fresca y el coste final total.
Imagina que acabas de abrir una nueva cuenta de ahorros que gana un cuatro por ciento de interés al año. Los intereses que ganas se pagan al final del año y se añaden al saldo de la cuenta de ahorros. Escribe un programa que comience leyendo la cantidad de dinero depositada en la cuenta por un usuario. Luego, debe calcular y mostrar la cantidad en la cuenta de ahorros después de \(1\) y \(2\) años.
Elabore un programa que lea una duración en la forma DD:HH:MM:SS, donde DD, HH, MM y SS representan días, horas, minutos y segundos, respectivamente. Las horas, los minutos y los segundos deben estar formateados de manera que ocupen exactamente dos dígitos. Además, el programa debe calcular y mostrar el número total de segundos representados por esta duración.
Elabore un programa que lea un número total de segundos ingresados por el usuario y dé la duración del intervalo en días, horas, minutos y segundos en la forma DD:HH:MM:SS. Las horas, los minutos y los segundos deben estar formateados de manera que ocupen exactamente dos dígitos
Elabore un programa que lea la longitud de dos catetos de un triángulo rectangulo e imprima la longitud de la hipotenusa.
Elabore un algoritmo que lea el volumen de una esfera y calcule el radio de la misma.
Escribir un programa que pregunte al usuario por el número de horas trabajadas y el coste por hora. Después debe mostrar por pantalla la paga que le corresponde.
Escribir un programa que pida al usuario dos números enteros \(n\) y \(m\) y muestre por pantalla: ``la división de \(n\) entre \(m\) da un cociente \(c\) y un residuo \(r\)”, donde \(n\) y \(m\) son los números introducidos por el usuario, y \(c\) y \(r\) son el cociente y el residuo de la división entera respectivamente.