Aprende a programar en Python desde cero con Google Colab - parte 3. Condicionales y ciclos

En este artículo revisaremos qué son los condicionales y los ciclos.

En particular veremos como abordar que sucede cuando necesitamos que se ejecute un código dependiendo de una condición con if, y como abordar aquellas situaciones donde necesitamos que se ejecute mucho código pero de modo similar con los ciclos for y while.

Revisa todas las partes en nuestra categoría Aprende a programar.

Archivos

Encuentra aquí el Google Colab con los códigos de esta sesión. Si no sabes como instalar Google Colab, revisa este artículo.

Condicionales

Video

Ve este contenido en video aquí

Guía

En Python, los condicionales se usan para ejecutar un bloque de código si cierta condición es verdadera. Te permiten controlar el flujo de tu programa. Python utiliza las palabras clave if, elif (que significa "else if") y else para controlar los condicionales.

Un ejemplo simple sería:

x = 5
if x > 0:
  print("x es positivo")
elif x < 0:
  print("x es negativo")
else:
  print("x es cero")

En el código anterior, si x es mayor que 0, imprimirá "x es positivo". Si x es menor que 0, imprimirá "x es negativo". Si x no es ni mayor ni menor que 0 (lo que significa que x es 0), imprimirá "x es cero".

Las condiciones en las declaraciones if y elif se determinan usando operadores de comparación (==, !=, <, <=, >, >=). Por ejemplo, x > 0 está comprobando si x es mayor que 0.

Operadores de Comparación

Los operadores de comparación se utilizan para comparar dos valores. Aquí están los principales operadores de comparación en Python:

  • Igual a (==): Este operador verifica si los dos valores son iguales. Por ejemplo, 5 == 3 es Falso.
  • No igual a (!=): Este operador verifica si los dos valores no son iguales. Por ejemplo, 5 != 3 es Verdadero.
  • Mayor que (>): Este operador verifica si el primer valor es mayor que el segundo. Por ejemplo, 5 > 3 es Verdadero.
  • Menor que (<): Este operador verifica si el primer valor es menor que el segundo. Por ejemplo, 5 < 3 es Falso.
  • Mayor o igual que (>=): Este operador verifica si el primer valor es mayor o igual que el segundo. Por ejemplo, 5 >= 3 es Verdadero.
  • Menor o igual que (<=): Este operador verifica si el primer valor es menor o igual que el segundo. Por ejemplo, 5 <= 3 es Falso.

Estos operadores devuelven un valor booleano (Verdadero o Falso). A menudo se utilizan en condiciones, como en declaraciones if o bucles while.

Por ejemplo

# Definamos dos variables
a = 5
b = 10


# Ahora podemos usar el operador '==' para verificar si estas dos variables son iguales
if a == b:
 print("a es igual a b")
else:
 print("a no es igual a b") # Esto se imprimirá
# También podemos usar el operador '!=' para verificar si dos variables no son iguales
if a != b:
 print("a no es igual a b") # Esto se imprimirá
else:
 print("a es igual a b")

Operadores and y or

Puedes evaluar multiples condiciones utilizando `and` para cuando necesites que las condiciones sean todas verdaderas, o bien `or` para cuando necesitas solo evaluar una parte de todas las condiciones.

estoyAfuera = True
estaLloviendo = True

if estoyAfuera and estaLloviendo:
  print("trae el paraguas")

También puedes combinar ambos, por ejemplo en en el siguiente caso evaluamos si una persona es alta, lo cual depende de su altura y de su genero

genero = "F"
altura = 160

if ( genero == "M" and altura > 165 ) or ( genero == "F" and altura > 155 ):
  print("La persona es alta")
else:
  print("La persona no es alta")

Expresiones condicionales

En python, una expresión condicional se escribe del siguiente modo

X if condition else Y
Nos ayuda a que nuestros códigos sean más legibles y limpios. Por ejemplo el siguiente código evalúa en muy pocas líneas si un código es par

miNumero = 2
print("el número es par" if miNumero % 2 == 0 else "el número es impar")

Bucles o ciclos

Los bucles en Python se utilizan para ejecutar un bloque de código de forma repetida. Python proporciona dos tipos de bucles: bucles for y bucles while.

Bucle For

Un bucle for en Python itera sobre una secuencia (como una lista, tupla, diccionario, cadena o conjunto, hablaremos de estos más adelante en la siguiente parte) u otros objetos iterables:

for i in range(5):
  print(i) 

# Output:
# 0
# 1
# 2
# 3
# 4

Esto es lo que está sucediendo:

for i in range(5): Este es el comienzo de un bucle for. La función range(5) genera una secuencia de números del 0 al 4 (5 números en total, comenzando desde 0). En cada iteración del bucle, la variable i toma el siguiente valor en esta secuencia.

print(i): Esta línea está dentro del bucle y se ejecuta en cada iteración. Imprime el valor actual de i en la consola.

Entonces, cuando ejecutes este código, imprimirá los números del 0 al 4 en líneas separadas.

# Vamos a crear una lista de frutas
frutas = ['manzana', 'plátano', 'cereza']

# Usaremos un bucle for para iterar sobre esta lista
for fruta in frutas:
    print("Me gusta el/la", fruta)

En este ejemplo, el bucle for pasa por cada elemento de la lista frutas (no te preocupes por lo que es una lista todavía, pero ten en cuenta que puedes iterar sobre ella).

En cada iteración, la variable fruta toma el valor del siguiente elemento de la lista, y luego la función print imprime una oración sobre esa fruta. Por lo tanto, este código imprimiría:

Me gusta el/la manzana
Me gusta el/la plátano
Me gusta el/la cereza

Bucle While

Un bucle while en Python se ejecuta mientras cierta condición sea verdadera:

i = 0
while i < 5:
  print(i)
  i += 1

En este código, i < 5 es la condición para el bucle while. Mientras esta condición sea verdadera (en otras palabras, mientras i sea menor que 5), el código dentro del bucle seguirá ejecutándose. En este caso, el código dentro del bucle es print(i) e i += 1.

La línea print(i) imprime el valor actual de i en la consola, y la línea i += 1 incrementa i en 1. Por lo tanto, cada vez que pasa por el bucle, i se hace más grande y, una vez que i ya no sea menor que 5, el bucle dejará de ejecutarse.

Es importante asegurarse de que la condición del bucle eventualmente se vuelva falsa, de lo contrario, el bucle se ejecutaría indefinidamente, creando lo que se conoce como un "bucle infinito". En este ejemplo, i sigue aumentando, por lo que eventualmente será 5 o más, y la condición i < 5 será falsa.

Ejercicio con bucle While: Control de Inventario

Eres el gerente de una tienda de zapatos y necesitas controlar tu inventario. Cada vez que vendes un par de zapatos, disminuyes tu inventario. Quieres tener un programa que te permita ingresar la cantidad inicial de pares de zapatos en tu tienda y luego, sucesivamente, te pregunte cuántos pares de zapatos se vendieron. El programa debe continuar preguntando cuántos pares de zapatos se vendieron hasta que el inventario llegue a cero. Finalmente, el programa debe decirte cuántas transacciones (ventas individuales) tuvieron lugar antes de que se acabara el inventario.

Instrucciones

  • Inicia con un inventario de X pares de zapatos (donde X es un número que ingresas).
  • Pregunta al usuario cuántos pares de zapatos se vendieron.
  • Deduce esa cantidad del inventario.
  • Repite el proceso hasta que el inventario sea 0.
  • Imprime el número total de transacciones realizadas.
# Ingreso de la cantidad inicial de zapatos en inventario
inventario = int(input("Ingrese la cantidad inicial de pares de zapatos en la tienda: "))
transacciones = 0  # Inicializa el contador de transacciones

# Mientras haya zapatos en inventario
while inventario > 0:
    venta = int(input("¿Cuántos pares de zapatos se vendieron en esta transacción? "))
    
    # Deduce la venta del inventario y suma al contador de transacciones
    inventario -= venta
    transacciones += 1

    # Verifica que no se ingrese una venta mayor al inventario
    if inventario < 0:
        print("La venta excede el inventario actual. Por favor, ingrese un número válido.")
        inventario += venta  # Devuelve la cantidad vendida al inventario
        transacciones -= 1   # Resta la transacción inválida

print(f"El inventario ha llegado a cero. Se realizaron {transacciones} transacciones.")

Bucle do while

El bucle "do-while" es un tipo de bucle que es común en algunos otros lenguajes de programación. Un bucle "do-while" es como un bucle while, pero siempre ejecuta el código dentro del bucle al menos una vez y luego sigue ejecutando el bucle mientras la condición sea verdadera.

Python no tiene un bucle "do-while" integrado como algunos otros lenguajes, pero puedes simular un bucle "do-while" usando un bucle while con una sentencia break. Así es cómo puedes hacerlo:

i = 0
while True:
  print(i)
  i += 1
  if i >= 5:
    break

En este código, while True: crea un bucle que normalmente se ejecutaría para siempre porque su condición siempre es verdadera. Pero la parte if i >= 5: break verifica si i es 5 o más, y si es así, ejecuta la sentencia break, que sale inmediatamente del bucle.

Por lo tanto, este código se comporta como un bucle "do-while": siempre ejecuta el bucle al menos una vez y sigue ejecutando el bucle mientras i sea menor que 5.

Cierre

En la siguiente parte revisaremos qué cuales son los diversos tipos de datos que podemos manipular en python, cuáles son sus características, ventajas y desventajas. En particular hablaremos de las listas, sets, diccionarios y tuplas.