Data Science para marketing

Creado por Nicolás Labbé

Estructuras de control

Estructuras de control

Un código es una secuencia de instrucciones, que por norma general son ejecutadas una tras otra. Podemos verlo como una receta de cocina, en la que tenemos unos pasos a seguir. Empezamos por el principio, vamos realizando cada tarea, y una vez hemos llegado al final, hemos terminado. Nuestra receta en código podría ser la siguiente:

Sin embargo, en muchas ocasiones no basta con ejecutar las instrucciones una tras otra desde el principio hasta llegar al final.

Condiciones y declaraciones If de Python

Python admite las condiciones lógicas habituales de las matemáticas:

  • Es igual a: a == b
  • No es igual a: a != b
  • Menor que: a < b
  • Menor o igual a: a <= b
  • Mayor que: a > b
  • Mayor o igual que: a >= b

Estas condiciones se pueden utilizar de varias maneras, más comúnmente en "declaraciones if" y bucles.

Una "declaración if" se escribe utilizando la palabra clave if.

						
							>>> a = 33
							>>> b = 200
							>>> if b > a:
							...   print("b is greater than a")
							... 
							b is greater than a
						
					

En este ejemplo, usamos dos variables, a y b , que forman parte de la instrucción if para comprobar si b es mayor que a . Como a es 33 y b es 200 , sabemos que 200 es mayor que 33, por lo que mostramos en pantalla que "b es mayor que a".

❌ Declaración If, sin sangría (generará un error):

						
							>>> a = 33
							>>> b = 200
							>>> if b > a:
							... print("b is greater than a") # you will get an error
							  File "", line 2
							    print("b is greater than a") # you will get an error
							    ^
							IndentationError: expected an indented block after 'if' statement on line 1
							>>> 
						
					

Elif

La palabra clave elif es la forma que tiene Python de decir "si las condiciones anteriores no eran verdaderas, entonces prueba esta condición".

						
							>>> a = 33
							>>> b = 33
							>>> if b > a:
							...   print("b is greater than a")
							... elif a == b:
							...   print("a and b are equal")
							... 
							a and b are equal
						
					

En este ejemplo , a es igual a b , por lo que la primera condición no es verdadera, pero la condición elif sí lo es, por lo que imprimimos en pantalla que "a y b son iguales".

Else

La palabra clave else captura cualquier cosa que no esté capturada por las condiciones anteriores.

						
							>>> a = 200
							>>> b = 33
							>>> if b > a:
							...   print("b is greater than a")
							... elif a == b:
							...   print("a and b are equal")
							... else:
							...   print("a is greater than b")
							... 
							a is greater than b
						
					

En este ejemplo , a es mayor que b , por lo que la primera condición no es verdadera, tampoco lo es la condición elif , por lo que vamos a la condición else e imprimimos en la pantalla que "a es mayor que b".

Short Hand If

Si solo tiene una declaración para ejecutar, puede colocarla en la misma línea que la declaración if.

						
							>>> a = 200
							>>> b = 33
							>>> if a > b: print("a is greater than b")
							... 
							a is greater than b
						
					

Short Hand If ... Else

Si solo tiene una declaración para ejecutar, una para if y otra para else, puede colocarlas todas en la misma línea:

						
							>>> a = 2
							>>> b = 330
							>>> print("A") if a > b else print("B")
							B
						
					

También puedes tener varias declaraciones else en la misma línea:

						
							a = 330
							b = 330
							print("A") if a > b else print("=") if a == b else print("B")
						
					

También puedes tener varias declaraciones else en la misma línea:

						
							>>> a = 330
							>>> b = 330
							>>> print("A") if a > b else print("=") if a == b else print("B")
							=
						
					

And

La palabra clave and es un operador lógico y se utiliza para combinar declaraciones condicionales:

						
							>>> a = 200
							>>> b = 33
							>>> c = 500
							>>> if a > b and c > a:
							...   print("Both conditions are True")
							... 
							Both conditions are True
						
					

Or

La palabra clave or es un operador lógico y se utiliza para combinar declaraciones condicionales:

						
							>>> a = 200
							>>> b = 33
							>>> c = 500
							>>> if a > b or a > c:
							...   print("At least one of the conditions is True")
							... 
							At least one of the conditions is True
						
					

Not

La palabra clave not es un operador lógico y se utiliza para revertir el resultado de la declaración condicional:

						
							>>> a = 33
							>>> b = 200
							>>> if not a > b:
							...   print("a is NOT greater than b")
							... 
							a is NOT greater than b
						
					

Nested If

Puedes tener declaraciones if dentro de declaraciones if, esto se llama declaraciones anidadas if .

						
							>>> a = 33
							>>> b = 200
							>>> if not a > b:
							...   print("a is NOT greater than b")
							... 
							a is NOT greater than b
						
					

The pass Statement

Las declaraciones if no pueden estar vacías, pero si por alguna razón tiene una ifdeclaración sin contenido, coloque la passdeclaración para evitar obtener un error.

						
							>>> a = 33
							>>> b = 200
							>>> 
							>>> if b > a:
							...   pass
							... 
						
					

While Loops

Con el bucle while podemos ejecutar un conjunto de sentencias siempre que una condición sea verdadera.

						
							>>> i = 1
							>>> while i < 6:
							...   print(i)
							...   i += 1
							... 
							1
							2
							3
							4
							5
						
					

The break Statement

Con la sentencia break podemos detener el bucle incluso si la condición while es verdadera.

						
							>>> i = 1
							>>> while i < 6:
							...   print(i)
							...   if i == 3:
							...     break
							...   i += 1
							... 
							1
							2
							3
						
					

The continue Statement

Con la sentencia break podemos detener el bucle incluso si la condición while es verdadera.

						
							>>> i = 0
							>>> while i < 6:
							...   i += 1
							...   if i == 3:
							...     continue
							...   print(i)
							... 
							1
							2
							4
							5
							6
						
					

The else Statement

Con la declaración else podemos ejecutar un bloque de código una vez cuando la condición ya no sea verdadera.

						
							>>> i = 0
							>>> while i < 6:
							...   i += 1
							...   if i == 3:
							...     continue
							...   print(i)
							... 
							1
							2
							4
							5
							6
						
					

Bucles for de Python

Un bucle for se utiliza para iterar sobre una secuencia (que puede ser una lista, una tupla, un diccionario, un conjunto o una cadena, etc).

Esto se parece menos a la palabra clave for en otros lenguajes de programación y funciona más como un método iterador como el que se encuentra en otros lenguajes de programación orientados a objetos.

Con el bucle for podemos ejecutar un conjunto de sentencias, una vez para cada elemento de una lista, tupla, conjunto, etc.

						
							>>> fruits = ["apple", "banana", "cherry"]
							>>> for x in fruits:
							...   print(x)
							... 
							apple
							banana
							cherry
						
						

💡 El bucle for no requiere que se establezca de antemano una variable de indexación.

Incluso los strings son objetos iterables, contienen una secuencia de caracteres:

						
							>>> for x in "banana":
							...   print(x)
							... 
							b
							a
							n
							a
							n
							a
						
					

Con la declaración break podemos detener el bucle antes de que haya recorrido todos los elementos:

						
							>>> fruits = ["apple", "banana", "cherry"]
							>>> for x in fruits:
							...   print(x)
							...   if x == "banana":
							...     break
							... 
							apple
							banana
						
					

Con la sentencia continue podemos detener la iteración actual del bucle y continuar con la siguiente:

						
							>>> fruits = ["apple", "banana", "cherry"]
							>>> for x in fruits:
							...   if x == "banana":
							...     continue
							...   print(x)
							... 
							apple
							cherry
						
					

La función range() devuelve una secuencia de números, comenzando desde 0 por defecto, y se incrementa de 1 (por defecto), y finaliza en un número especificado.

						
							>>> for x in range(6):
							...   print(x)
							... 
							0
							1
							2
							3
							4
							5
						
					

⚠️ Ten en cuenta que range(6) no son los valores de 0 a 6, sino los valores de 0 a 5.

La función range() tiene como valor inicial predeterminado 0, sin embargo, es posible especificar el valor inicial agregando un parámetro: range(2, 6) , que significa valores de 2 a 6 (pero sin incluir 6):

						
							>>> for x in range(2, 6):
							...   print(x)
							... 
							2
							3
							4
							5
						
					

La función range() tiene como valor predeterminado incrementar la secuencia en 1, sin embargo es posible especificar el valor de incremento agregando un tercer parámetro: range(2, 30, 3 ) :

						
							>>> for x in range(2, 30, 3):
							...   print(x)
							... 
							2
							5
							8
							11
							14
							17
							20
							23
							26
							29
						
					

La palabra clave else en un forbucle especifica un bloque de código que se ejecutará cuando finalice el bucle:

						
							>>> for x in range(6):
							...   print(x)
							... else:
							...   print("Finally finished!")
							... 
							0
							1
							2
							3
							4
							5
							Finally finished!
						
					

Un bucle anidado es un bucle dentro de un bucle. El "bucle interno" se ejecutará una vez por cada iteración del "bucle externo":

						
							>>> adj = ["red", "big", "tasty"]
							>>> fruits = ["apple", "banana", "cherry"]
							>>> 
							>>> for x in adj:
							...   for y in fruits:
							...     print(x, y)
							... 
							red apple
							red banana
							red cherry
							big apple
							big banana
							big cherry
							tasty apple
							tasty banana
							tasty cherry
						
					

Los bucles for no pueden estar vacíos, pero si por alguna razón tienes un bucle for sin contenido, ponlo en la declaración pass para evitar obtener un error.

						
							>>> for x in [0, 1, 2]:
							...   pass
							...