diff --git a/Spanish/02_Day_Variables_builtin_functions/02_variables_builtin_functions.md b/Spanish/02_Day_Variables_builtin_functions/02_variables_builtin_functions.md
index 149cc7b43..6dcc5e841 100644
--- a/Spanish/02_Day_Variables_builtin_functions/02_variables_builtin_functions.md
+++ b/Spanish/02_Day_Variables_builtin_functions/02_variables_builtin_functions.md
@@ -1,5 +1,5 @@
Author:
+Autor:
Asabeneh Yetayeh
- Second Edition: July, 2021
+ Segunda edición: julio de 2021
-[<< Dia 2](../02_Day_Variables_builtin_functions/02_variables_builtin_functions.md) | [Dia 4 >>](../04_Day_Strings/04_strings.md)
+[<< Día 2](../02_Day_Variables_builtin_functions/02_variables_builtin_functions.md) | [Día 4 >>](../04_Day_Strings/04_strings.md)

-- [📘 Día 3](#📘-día-3)
- - [Booleano](#booleano)
- - [Operadores](#operadores)
- - [Operadores de asignación](#operadores-de-asignación)
- - [Operadores aritméticos:](#operadores-aritméticos)
- - [Operadores de comparación](#operadores-de-comparación)
- - [Operadores lógicos](#operadores-lógicos)
- - [💻 Ejercicios - Día 3](#💻-ejercicios---día-3)
+_Lectura aproximada: 12 min_
+- [📘 Día 3](#-día-3)
+ - [Boolean](#boolean)
+ - [Operadores](#operadores)
+ - [Operadores de asignación](#operadores-de-asignación)
+ - [Operadores aritméticos](#operadores-aritméticos)
+ - [Operadores de comparación](#operadores-de-comparación)
+ - [Operadores lógicos](#operadores-lógicos)
+ - [💻 Ejercicios - Día 3](#-ejercicios---día-3)
# 📘 Día 3
-## Booleano
+## Boolean
+
+El tipo booleano representa uno de dos valores: _True_ o _False_. Cuando comencemos a usar operadores de comparación su uso quedará claro. La primera letra **T** representa True y **F** representa False; a diferencia de JavaScript, en Python las palabras booleanas deben escribirse con la primera letra en mayúscula.
-Un tipo de datos booleano representa uno de los dos valores: _Verdadero_ o _Falso_. El uso de estos tipos de datos quedará claro una vez que comencemos a usar el operador de comparación. La primera letra **T** para Verdadero y **F** para Falso debe ser en mayúscula a diferencia de JavaScript.
**Ejemplo: valores booleanos**
```py
@@ -40,53 +42,53 @@ print(False)
## Operadores
-Python language supports several types of operators. In this section, we will focus on few of them.
+Python soporta varios tipos de operadores. En esta sección nos centraremos en algunos de ellos.
### Operadores de asignación
-Los operadores de asignación se utilizan para asignar valores a las variables. Tomemos = como ejemplo. El signo igual en matemáticas muestra que dos valores son iguales, sin embargo, en Python significa que estamos almacenando un valor en una determinada variable y lo llamamos asignación o asignación de valor a una variable. La siguiente tabla muestra los diferentes tipos de operadores de asignación de Python, tomados de [w3school](https://www.w3schools.com/python/python_operators.asp).
+Los operadores de asignación se usan para asignar valores a las variables. Tomemos = como ejemplo: en matemáticas el signo igual indica que dos valores son iguales, pero en Python indica que estamos almacenando un valor en una variable; esto se llama asignación. La tabla siguiente muestra los diferentes operadores de asignación en Python (tomada de [w3schools](https://www.w3schools.com/python/python_operators.asp)).
-
+
### Operadores aritméticos:
- Suma (+): a + b
-- Resta(-): a - b
-- Multiplicación(*): a * b
-- División(/): a/b
-- Módulo(%): a % b
-- División de piso(//): a // b
-- Exponenciación(**): a ** b
+- Resta (-): a - b
+- Multiplicación (*): a * b
+- División (/): a / b
+- Módulo (%): a % b
+- División entera (//): a // b
+- Exponenciación (**): a ** b

-**Ejemplo: Enteros**
+**Ejemplo: enteros**
```py
-# Operaciones aritméticas en Python
-# enteros
+# Operadores aritméticos en Python
+# Enteros
print('Addition: ', 1 + 2) # 3
print('Subtraction: ', 2 - 1) # 1
print('Multiplication: ', 2 * 3) # 6
-print ('Division: ', 4 / 2) # 2.0 La división en Python da un número flotante
+print ('Division: ', 4 / 2) # 2.0 la división en Python devuelve float
print('Division: ', 6 / 2) # 3.0
print('Division: ', 7 / 2) # 3.5
-print('Division without the remainder: ', 7 // 2) # 3, da sin el número flotante o sin el resto
+print('Division without the remainder: ', 7 // 2) # 3, devuelve la parte entera del cociente
print ('Division without the remainder: ',7 // 3) # 2
-print('Modulus: ', 3 % 2) # 1, da el resto
-print('Exponentiation: ', 2 ** 3) # 9 significa 2 * 2 * 2
+print('Modulus: ', 3 % 2) # 1, devuelve el resto
+print('Exponentiation: ', 2 ** 3) # 8 representa 2 * 2 * 2
```
-**Ejemplo: Floats**
+**Ejemplo: flotantes**
```py
-# Números flotantes
+# Flotantes
print('Floating Point Number, PI', 3.14)
print('Floating Point Number, gravity', 9.81)
```
-**Ejemplo: Números complex**
+**Ejemplo: números complejos**
```py
# Números complejos
@@ -94,17 +96,17 @@ print('Complex number: ', 1 + 1j)
print('Multiplying complex numbers: ',(1 + 1j) * (1 - 1j))
```
-Declaremos una variable y asignemos un tipo de dato numérico. Voy a usar una variable de un solo carácter, pero recuerde que no desarrolle el hábito de declarar este tipo de variables. Los nombres de las variables deben ser siempre mnemotécnicos.
+Declararemos una variable y le asignaremos un valor numérico. En el ejemplo uso nombres de una sola letra, pero no acostumbres a nombrar variables así; los nombres deben ser siempre fáciles de recordar.
**Ejemplo:**
```python
-# Declarar la variable en la parte superior primero
+# Primero declaramos las variables
-a = 3 # a es un nombre de variable y 3 es un tipo de dato entero
-b = 2 # b es un nombre de variable y 3 es un tipo de dato entero
+a = 3 # a es un nombre de variable, 3 es un valor entero
+b = 2 # b es un nombre de variable, 2 es un valor entero
-# Operaciones aritméticas y asignación del resultado a una variable
+# Realizamos operaciones aritméticas y asignamos los resultados a variables
total = a + b
diff = a - b
product = a * b
@@ -113,8 +115,8 @@ remainder = a % b
floor_division = a // b
exponential = a ** b
-# Debería haber usado sum en lugar de total, pero sum es una función integrada; trate de evitar anular las funciones integradas
-print(total) # si no etiqueta su impresión con alguna cadena, nunca sabrá de dónde viene el resultado
+# Deberíamos usar sum en lugar de total, pero sum es una función integrada — evita sobrescribirla
+print(total) # Si no imprimimos etiquetas, no sabremos qué representa cada valor
print('a + b = ', total)
print('a - b = ', diff)
print('a * b = ', product)
@@ -129,18 +131,18 @@ print('a ** b = ', exponentiation)
```py
print('== Addition, Subtraction, Multiplication, Division, Modulus ==')
-# Declarar valores y organizarlos juntos
+# Declaramos las variables
num_one = 3
num_two = 4
-# Operaciones aritmeticas
+# Operaciones aritméticas
total = num_one + num_two
diff = num_two - num_one
product = num_one * num_two
div = num_two / num_one
remainder = num_two % num_one
-# Imprimiendo valores con etiqueta
+# Imprimimos con etiquetas
print('total: ', total)
print('difference: ', diff)
print('product: ', product)
@@ -148,16 +150,17 @@ print('division: ', div)
print('remainder: ', remainder)
```
-Empecemos a conectar los puntos y empecemos a hacer uso de lo que ya sabemos para calcular (área, volumen, densidad, peso, perímetro, distancia, fuerza).
+Comencemos a usar números con decimales y pongamos en práctica lo aprendido para calcular áreas, volúmenes, densidades, pesos, perímetros, distancias y fuerzas.
**Ejemplo:**
+
```py
-# Cálculo del área de un círculo
-radius = 10 # radio de un circulo
-area_of_circle = 3.14 * radius ** 2 # dos signo * significa exponente o potencia
+# Calcular el área de un círculo
+radius = 10 # radio del círculo
+area_of_circle = 3.14 * radius ** 2 # dos * indican exponente o potencia
print('Area of a circle:', area_of_circle)
-# Calcular el área de un rectángulo
+# Calcular el área del rectángulo
length = 10
width = 20
area_of_rectangle = length * width
@@ -167,28 +170,28 @@ print('Area of rectangle:', area_of_rectangle)
mass = 75
gravity = 9.81
weight = mass * gravity
-print(weight, 'N') # Agregando unidad al peso
+print(weight, 'N') # añadimos la unidad para la fuerza
# Calcular la densidad de un líquido
-mass = 75 # en kg
-volume = 0.075 # en metros cúbicos
-density = mass / volume # 1000 Kg/m^3
+mass = 75 # unidad: Kg
+volume = 0.075 # unidad: m³
+density = mass / volume # 1000 Kg/m³
```
### Operadores de comparación
-En programación comparamos valores, usamos operadores de comparación para comparar dos valores. Comprobamos si un valor es mayor o menor o igual a otro valor. La siguiente tabla muestra los operadores de comparación de Python que se tomaron de [w3shool](https://www.w3schools.com/python/python_operators.asp).
+En programación usamos operadores de comparación para comparar dos valores. Comprobamos si un valor es mayor, menor o igual a otro. La tabla siguiente muestra los operadores de comparación en Python (tomada de [w3schools](https://www.w3schools.com/python/python_operators.asp)).
-
-**Ejemplo: Operadores de comparación**
+
+**Ejemplo: operadores de comparación**
```py
print(3 > 2) # True, porque 3 es mayor que 2
-print(3 >= 2) # True, porque 3 es mayor que 2
-print(3 < 2) # False, porque 3 es mayor que 2
+print(3 >= 2) # True, porque 3 es mayor o igual que 2
+print(3 < 2) # False, porque 3 no es menor que 2
print(2 < 3) # True, porque 2 es menor que 3
-print(2 <= 3) # True, porque 2 es menor que 3
+print(2 <= 3) # True, porque 2 es menor o igual que 3
print(3 == 2) # False, porque 3 no es igual a 2
print(3 != 2) # True, porque 3 no es igual a 2
print(len('mango') == len('avocado')) # False
@@ -200,108 +203,110 @@ print(len('tomato') == len('potato')) # True
print(len('python') > len('dragon')) # False
-# Comparar algo da un True o False
+# Las comparaciones devuelven True o False
print('True == True: ', True == True)
print('True == False: ', True == False)
print('False == False:', False == False)
```
-Además del operador de comparación anterior, Python usa:
+Además de los operadores de comparación anteriores, Python también utiliza:
-- _is_: Devuelve True si ambas variables son el mismo objeto (x es y)
-- _is not_: Devuelve True si ambas variables no son el mismo objeto (x no es y)
-- _in_: Devuelve True si la lista consultada contiene un elemento determinado (x en y)
-- _not in_: Devuelve True si la lista consultada no tiene un elemento determinado (x en y)
+- _is_: devuelve True si los objetos son idénticos (x is y)
+- _is not_: devuelve True si los objetos no son idénticos (x is not y)
+- _in_: devuelve True si un elemento está en una secuencia (x in y)
+- _not in_: devuelve True si un elemento no está en una secuencia (x not in y)
```py
-print('1 is 1', 1 is 1) # True - porque los valores de los datos son los mismos
-print('1 is not 2', 1 is not 2) # True - porque 1 no es 2
-print('A in Asabeneh', 'A' in 'Asabeneh') # True - A encontrado en la cadena
-print('B in Asabeneh', 'B' in 'Asabeneh') # False - no hay b mayúscula
-print('coding' in 'coding for all') # True - porque 'coding for all' tiene la palabra 'coding'
+print('1 is 1', 1 is 1) # True - porque los objetos son idénticos
+print('1 is not 2', 1 is not 2) # True - porque los objetos no son idénticos
+print('A in Asabeneh', 'A' in 'Asabeneh') # True - la cadena contiene 'A'
+print('B in Asabeneh', 'B' in 'Asabeneh') # False - no hay 'B' mayúscula
+print('coding' in 'coding for all') # True - 'coding' está en 'coding for all'
print('a in an:', 'a' in 'an') # True
print('4 is 2 ** 2:', 4 is 2 ** 2) # True
```
### Operadores lógicos
-A diferencia de otros lenguajes de programación, Python utiliza las palabras clave _and_, _or_ y _not_ para los operadores lógicos. Los operadores lógicos se utilizan para combinar sentencias condicionales:
+A diferencia de otros lenguajes de programación, Python usa las palabras clave _and_, _or_ y _not_ como operadores lógicos. Los operadores lógicos se utilizan para combinar expresiones condicionales:
-
+
```py
-print(3 > 2 and 4 > 3) # True - porque ambas afirmaciones son verdaderas
-print(3 > 2 and 4 < 3) # False - porque la segunda afirmación es falsa
-print(3 < 2 and 4 < 3) # False - porque ambas afirmaciones son falsas
+print(3 > 2 and 4 > 3) # True - porque ambas expresiones son True
+print(3 > 2 and 4 < 3) # False - porque una de las expresiones es False
+print(3 < 2 and 4 < 3) # False - porque ambas expresiones son False
print('True and True: ', True and True)
-print(3 > 2 or 4 > 3) # True - porque ambas afirmaciones son verdaderas
-print(3 > 2 or 4 < 3) # True - porque una de las afirmaciones es verdadera
-print(3 < 2 or 4 < 3) # False - porque ambas afirmaciones son falsas
+print(3 > 2 or 4 > 3) # True - porque una o ambas expresiones son True
+print(3 > 2 or 4 < 3) # True - porque una de las expresiones es True
+print(3 < 2 or 4 < 3) # False - porque ambas expresiones son False
print('True or False:', True or False)
-print(not 3 > 2) # False - porque 3 > 2 es verdadero, entonces no verdadero da falso
-print(not True) # False - Negación, el operador not devuelve verdadero a falso
+print(not 3 > 2) # False - 3 > 2 es True, not True es False
+print(not True) # False - not convierte True en False
print(not False) # True
print(not not True) # True
print(not not False) # False
```
-🌕 Tienes una energía ilimitada. Acaba de completar los desafíos del día 3 y está tres pasos por delante en su camino hacia la grandeza. Ahora haz algunos ejercicios para tu cerebro y tus músculos.
+🌕 ¡Con energía! Acabas de completar el desafío del Día 3 y has avanzado tres pasos en el camino hacia el dominio. Ahora realiza algunos ejercicios para poner a prueba tu mente y tus habilidades.
+
## 💻 Ejercicios - Día 3
-1. Declara tu edad como variable entera
-2. Declara tu altura como una variable flotante
-3. Declarar una variable que almacene un número complejo
-4. Escriba un script que solicite al usuario que ingrese la base y la altura del triángulo y calcule el área de este triángulo (área = 0,5 x b x h).
+1. Declara una variable entera que represente tu edad
+2. Declara una variable float que represente tu altura
+3. Declara una variable compleja
+4. Escribe un script que pida al usuario la base y la altura de un triángulo y calcule su área (Área = 0,5 x b x h).
```py
- Enter base: 20
- Enter height: 10
- The area of the triangle is 100
+ Entrada base: 20
+ Entrada altura: 10
+ El área del triángulo es 100
```
-5. Escriba un script que solicite al usuario que ingrese el lado a, el lado b y el lado c del triángulo. Calcula el perímetro del triángulo (perímetro = a + b + c).
+5. Escribe un script que pida al usuario los lados a, b y c de un triángulo y calcule su perímetro (Perímetro = a + b + c).
```py
-Enter side a: 5
-Enter side b: 4
-Enter side c: 3
-The perimeter of the triangle is 12
+ Entrada lado a: 5
+ Entrada lado b: 4
+ Entrada lado c: 3
+ El perímetro del triángulo es 12
```
-
-6. Obtenga la longitud y el ancho de un rectángulo usando el indicador. Calcula su área (área = largo x ancho) y perímetro (perímetro = 2 x (largo + ancho))
-7. Obtenga el radio de un círculo usando el aviso. Calcula el área (área = pi x r x r) y la circunferencia (c = 2 x pi x r) donde pi = 3,14.
-8. Calcular la pendiente, la intersección x y la intersección y de y = 2x -2
-9. La pendiente es (m = y2-y1/x2-x1). Encuentre la pendiente y la [distancia euclidiana](https://en.wikipedia.org/wiki/Euclidean_distance#:~:text=In%20mathematics%2C%20the%20Euclidean%20distance,being%20called%20the%20Pythagorean%20distance.) entre el punto (2, 2) y el punto (6,10)
-10. Compara las pendientes en las tareas 8 y 9.
-11. Calcula el valor de y (y = x^2 + 6x + 9). Trate de usar diferentes valores de x y descubra en qué valor de x y será 0.
-12. Encuentra la longitud de 'python' y 'dragon' y haz una declaración de comparación falsa.
-13. Use el operador _and_ para verificar si 'on' se encuentra tanto en 'python' como en 'dragon'
-14. _Espero que este curso no esté lleno de jerga_. Use el operador _in_ para verificar si _jerga_ está en la oración.
-15. No hay 'on' ni en dragón ni en pitón
-16. Encuentre la longitud del texto _python_ y convierta el valor en flotante y conviértalo en cadena
-17. Los números pares son divisibles por 2 y el resto es cero. ¿Cómo verifica si un número es par o no usando python?
-18. Verifique si la división de piso de 7 por 3 es igual al valor int convertido de 2.7.
-19. Comprueba si el tipo de '10' es igual al tipo de 10
-20. Comprueba si int('9.8') es igual a 10
-21. Escriba un script que solicite al usuario que ingrese las horas y la tarifa por hora. ¿Calcular el salario de la persona?
+6. Pide al usuario la longitud y la anchura de un rectángulo. Calcula su área (Área = largo x ancho) y su perímetro (Perímetro = 2 x (largo + ancho)).
+7. Pide al usuario el radio de un círculo. Calcula su área (Área = pi x r x r) y su circunferencia (Circunferencia = 2 x pi x r), con pi = 3.14.
+8. Calcula la pendiente, la intersección en x y la intersección en y de y = 2x - 2.
+9. La pendiente se calcula como (m = (y2 - y1) / (x2 - x1)). Encuentra la pendiente y la distancia euclídea entre los puntos (2, 2) y (6, 10).
+10. Compara las pendientes obtenidas en los ejercicios 8 y 9.
+11. Calcula el valor de y para y = x^2 + 6x + 9. Prueba con distintos valores de x y encuentra cuándo y es 0.
+12. Encuentra la longitud de 'python' y 'dragon', y realiza una comparación ficticia.
+13. Usa el operador _and_ para comprobar si tanto 'python' como 'dragon' contienen 'on'.
+14. En la oración _I hope this course is not full of jargon_, usa el operador _in_ para comprobar si contiene la palabra _jargon_.
+15. Comprueba que ni 'dragon' ni 'python' contienen 'on'.
+16. Encuentra la longitud de 'python', conviértela a float y luego a string.
+17. Los números pares son divisibles por 2 con resto 0. ¿Cómo comprobar en Python si un número es par o impar?
+18. Comprueba si la división entera de 7 entre 3 es igual al valor entero de 2.7.
+19. Comprueba si el tipo de '10' es igual al tipo de 10.
+20. Comprueba si int('9.8') es igual a 10.
+21. Escribe un script que solicite las horas trabajadas y la tarifa por hora al usuario y calcule el salario.
```py
-Enter hours: 40
-Enter rate per hour: 28
-Your weekly earning is 1120
+Introduce horas trabajadas: 40
+Introduce tarifa por hora: 28
+Tu salario semanal es 1120
```
-22. Escriba un script que le solicite al usuario que ingrese el número de años. Calcula el número de segundos que una persona puede vivir. Suponga que una persona puede vivir cien años.
+
+22. Escribe un script que pida al usuario los años vividos y calcule cuántos segundos ha vivido una persona (supongamos que puede vivir 100 años).
```py
-Enter number of years you have lived: 100
-You have lived for 3153600000 seconds.
+Introduce cuántos años has vivido: 100
+Has vivido 3153600000 segundos.
```
-23. Escriba un script de Python que muestre la siguiente tabla
+23. Escribe un script en Python que muestre la siguiente tabla
+
```py
1 1 1 1 1
@@ -311,6 +316,6 @@ You have lived for 3153600000 seconds.
5 1 5 25 125
```
-🎉 ¡FELICITACIONES! 🎉
+🎉 ¡Felicidades! 🎉
-[<< Day 2](../02_Day_Variables_builtin_functions/02_variables_builtin_functions.md) | [Day 4 >>](../04_Day_Strings/04_strings.md)
+[<< Día 2](../02_Day_Variables_builtin_functions/02_variables_builtin_functions.md) | [Día 4 >>](../04_Day_Strings/04_strings.md)
diff --git a/Spanish/03_operators_sp.md b/Spanish/03_operators_sp.md
deleted file mode 100644
index 588298f73..000000000
--- a/Spanish/03_operators_sp.md
+++ /dev/null
@@ -1,321 +0,0 @@
-
-
30 días de Python: Día 3 - Operadores
-
-
-
-
Autor:
-Asabeneh Yetayeh
- Segunda edición: julio de 2021
-
-
-
-[<< Día 2](./02_variables_builtin_functions_sp.md) | [Día 4 >>](./04_strings_sp.md)
-
-
-
-_Lectura aproximada: 12 min_
-- [📘 Día 3](#-día-3)
- - [Boolean](#boolean)
- - [Operadores](#operadores)
- - [Operadores de asignación](#operadores-de-asignación)
- - [Operadores aritméticos](#operadores-aritméticos)
- - [Operadores de comparación](#operadores-de-comparación)
- - [Operadores lógicos](#operadores-lógicos)
- - [💻 Ejercicios - Día 3](#-ejercicios---día-3)
-
-# 📘 Día 3
-
-## Boolean
-
-El tipo booleano representa uno de dos valores: _True_ o _False_. Cuando comencemos a usar operadores de comparación su uso quedará claro. La primera letra **T** representa True y **F** representa False; a diferencia de JavaScript, en Python las palabras booleanas deben escribirse con la primera letra en mayúscula.
-
-**Ejemplo: valores booleanos**
-
-```py
-print(True)
-print(False)
-```
-
-## Operadores
-
-Python soporta varios tipos de operadores. En esta sección nos centraremos en algunos de ellos.
-
-### Operadores de asignación
-
-Los operadores de asignación se usan para asignar valores a las variables. Tomemos = como ejemplo: en matemáticas el signo igual indica que dos valores son iguales, pero en Python indica que estamos almacenando un valor en una variable; esto se llama asignación. La tabla siguiente muestra los diferentes operadores de asignación en Python (tomada de [w3schools](https://www.w3schools.com/python/python_operators.asp)).
-
-
-
-### Operadores aritméticos:
-
-- Suma (+): a + b
-- Resta (-): a - b
-- Multiplicación (*): a * b
-- División (/): a / b
-- Módulo (%): a % b
-- División entera (//): a // b
-- Exponenciación (**): a ** b
-
-
-
-**Ejemplo: enteros**
-
-```py
-# Operadores aritméticos en Python
-# Enteros
-
-print('Addition: ', 1 + 2) # 3
-print('Subtraction: ', 2 - 1) # 1
-print('Multiplication: ', 2 * 3) # 6
-print ('Division: ', 4 / 2) # 2.0 la división en Python devuelve float
-print('Division: ', 6 / 2) # 3.0
-print('Division: ', 7 / 2) # 3.5
-print('Division without the remainder: ', 7 // 2) # 3, devuelve la parte entera del cociente
-print ('Division without the remainder: ',7 // 3) # 2
-print('Modulus: ', 3 % 2) # 1, devuelve el resto
-print('Exponentiation: ', 2 ** 3) # 8 representa 2 * 2 * 2
-```
-
-**Ejemplo: flotantes**
-
-```py
-# Flotantes
-print('Floating Point Number, PI', 3.14)
-print('Floating Point Number, gravity', 9.81)
-```
-
-**Ejemplo: números complejos**
-
-```py
-# Números complejos
-print('Complex number: ', 1 + 1j)
-print('Multiplying complex numbers: ',(1 + 1j) * (1 - 1j))
-```
-
-Declararemos una variable y le asignaremos un valor numérico. En el ejemplo uso nombres de una sola letra, pero no acostumbres a nombrar variables así; los nombres deben ser siempre fáciles de recordar.
-
-**Ejemplo:**
-
-```python
-# Primero declaramos las variables
-
-a = 3 # a es un nombre de variable, 3 es un valor entero
-b = 2 # b es un nombre de variable, 2 es un valor entero
-
-# Realizamos operaciones aritméticas y asignamos los resultados a variables
-total = a + b
-diff = a - b
-product = a * b
-division = a / b
-remainder = a % b
-floor_division = a // b
-exponential = a ** b
-
-# Deberíamos usar sum en lugar de total, pero sum es una función integrada — evita sobrescribirla
-print(total) # Si no imprimimos etiquetas, no sabremos qué representa cada valor
-print('a + b = ', total)
-print('a - b = ', diff)
-print('a * b = ', product)
-print('a / b = ', division)
-print('a % b = ', remainder)
-print('a // b = ', floor_division)
-print('a ** b = ', exponentiation)
-```
-
-**Ejemplo:**
-
-```py
-print('== Addition, Subtraction, Multiplication, Division, Modulus ==')
-
-# Declaramos las variables
-num_one = 3
-num_two = 4
-
-# Operaciones aritméticas
-total = num_one + num_two
-diff = num_two - num_one
-product = num_one * num_two
-div = num_two / num_one
-remainder = num_two % num_one
-
-# Imprimimos con etiquetas
-print('total: ', total)
-print('difference: ', diff)
-print('product: ', product)
-print('division: ', div)
-print('remainder: ', remainder)
-```
-
-Comencemos a usar números con decimales y pongamos en práctica lo aprendido para calcular áreas, volúmenes, densidades, pesos, perímetros, distancias y fuerzas.
-
-**Ejemplo:**
-
-```py
-# Calcular el área de un círculo
-radius = 10 # radio del círculo
-area_of_circle = 3.14 * radius ** 2 # dos * indican exponente o potencia
-print('Area of a circle:', area_of_circle)
-
-# Calcular el área del rectángulo
-length = 10
-width = 20
-area_of_rectangle = length * width
-print('Area of rectangle:', area_of_rectangle)
-
-# Calcular el peso de un objeto
-mass = 75
-gravity = 9.81
-weight = mass * gravity
-print(weight, 'N') # añadimos la unidad para la fuerza
-
-# Calcular la densidad de un líquido
-mass = 75 # unidad: Kg
-volume = 0.075 # unidad: m³
-density = mass / volume # 1000 Kg/m³
-
-```
-
-### Operadores de comparación
-
-En programación usamos operadores de comparación para comparar dos valores. Comprobamos si un valor es mayor, menor o igual a otro. La tabla siguiente muestra los operadores de comparación en Python (tomada de [w3schools](https://www.w3schools.com/python/python_operators.asp)).
-
-
-**Ejemplo: operadores de comparación**
-
-```py
-print(3 > 2) # True, porque 3 es mayor que 2
-print(3 >= 2) # True, porque 3 es mayor o igual que 2
-print(3 < 2) # False, porque 3 no es menor que 2
-print(2 < 3) # True, porque 2 es menor que 3
-print(2 <= 3) # True, porque 2 es menor o igual que 3
-print(3 == 2) # False, porque 3 no es igual a 2
-print(3 != 2) # True, porque 3 no es igual a 2
-print(len('mango') == len('avocado')) # False
-print(len('mango') != len('avocado')) # True
-print(len('mango') < len('avocado')) # True
-print(len('milk') != len('meat')) # False
-print(len('milk') == len('meat')) # True
-print(len('tomato') == len('potato')) # True
-print(len('python') > len('dragon')) # False
-
-
-# Las comparaciones devuelven True o False
-
-print('True == True: ', True == True)
-print('True == False: ', True == False)
-print('False == False:', False == False)
-```
-
-Además de los operadores de comparación anteriores, Python también utiliza:
-
-- _is_: devuelve True si los objetos son idénticos (x is y)
-- _is not_: devuelve True si los objetos no son idénticos (x is not y)
-- _in_: devuelve True si un elemento está en una secuencia (x in y)
-- _not in_: devuelve True si un elemento no está en una secuencia (x not in y)
-
-```py
-print('1 is 1', 1 is 1) # True - porque los objetos son idénticos
-print('1 is not 2', 1 is not 2) # True - porque los objetos no son idénticos
-print('A in Asabeneh', 'A' in 'Asabeneh') # True - la cadena contiene 'A'
-print('B in Asabeneh', 'B' in 'Asabeneh') # False - no hay 'B' mayúscula
-print('coding' in 'coding for all') # True - 'coding' está en 'coding for all'
-print('a in an:', 'a' in 'an') # True
-print('4 is 2 ** 2:', 4 is 2 ** 2) # True
-```
-
-### Operadores lógicos
-
-A diferencia de otros lenguajes de programación, Python usa las palabras clave _and_, _or_ y _not_ como operadores lógicos. Los operadores lógicos se utilizan para combinar expresiones condicionales:
-
-
-
-```py
-print(3 > 2 and 4 > 3) # True - porque ambas expresiones son True
-print(3 > 2 and 4 < 3) # False - porque una de las expresiones es False
-print(3 < 2 and 4 < 3) # False - porque ambas expresiones son False
-print('True and True: ', True and True)
-print(3 > 2 or 4 > 3) # True - porque una o ambas expresiones son True
-print(3 > 2 or 4 < 3) # True - porque una de las expresiones es True
-print(3 < 2 or 4 < 3) # False - porque ambas expresiones son False
-print('True or False:', True or False)
-print(not 3 > 2) # False - 3 > 2 es True, not True es False
-print(not True) # False - not convierte True en False
-print(not False) # True
-print(not not True) # True
-print(not not False) # False
-
-```
-
-🌕 ¡Con energía! Acabas de completar el desafío del Día 3 y has avanzado tres pasos en el camino hacia el dominio. Ahora realiza algunos ejercicios para poner a prueba tu mente y tus habilidades.
-
-
-## 💻 Ejercicios - Día 3
-
-1. Declara una variable entera que represente tu edad
-2. Declara una variable float que represente tu altura
-3. Declara una variable compleja
-4. Escribe un script que pida al usuario la base y la altura de un triángulo y calcule su área (Área = 0,5 x b x h).
-
-```py
- Entrada base: 20
- Entrada altura: 10
- El área del triángulo es 100
-```
-
-5. Escribe un script que pida al usuario los lados a, b y c de un triángulo y calcule su perímetro (Perímetro = a + b + c).
-
-```py
- Entrada lado a: 5
- Entrada lado b: 4
- Entrada lado c: 3
- El perímetro del triángulo es 12
-```
-6. Pide al usuario la longitud y la anchura de un rectángulo. Calcula su área (Área = largo x ancho) y su perímetro (Perímetro = 2 x (largo + ancho)).
-7. Pide al usuario el radio de un círculo. Calcula su área (Área = pi x r x r) y su circunferencia (Circunferencia = 2 x pi x r), con pi = 3.14.
-8. Calcula la pendiente, la intersección en x y la intersección en y de y = 2x - 2.
-9. La pendiente se calcula como (m = (y2 - y1) / (x2 - x1)). Encuentra la pendiente y la distancia euclídea entre los puntos (2, 2) y (6, 10).
-10. Compara las pendientes obtenidas en los ejercicios 8 y 9.
-11. Calcula el valor de y para y = x^2 + 6x + 9. Prueba con distintos valores de x y encuentra cuándo y es 0.
-12. Encuentra la longitud de 'python' y 'dragon', y realiza una comparación ficticia.
-13. Usa el operador _and_ para comprobar si tanto 'python' como 'dragon' contienen 'on'.
-14. En la oración _I hope this course is not full of jargon_, usa el operador _in_ para comprobar si contiene la palabra _jargon_.
-15. Comprueba que ni 'dragon' ni 'python' contienen 'on'.
-16. Encuentra la longitud de 'python', conviértela a float y luego a string.
-17. Los números pares son divisibles por 2 con resto 0. ¿Cómo comprobar en Python si un número es par o impar?
-18. Comprueba si la división entera de 7 entre 3 es igual al valor entero de 2.7.
-19. Comprueba si el tipo de '10' es igual al tipo de 10.
-20. Comprueba si int('9.8') es igual a 10.
-21. Escribe un script que solicite las horas trabajadas y la tarifa por hora al usuario y calcule el salario.
-
-```py
-Introduce horas trabajadas: 40
-Introduce tarifa por hora: 28
-Tu salario semanal es 1120
-```
-
-
-22. Escribe un script que pida al usuario los años vividos y calcule cuántos segundos ha vivido una persona (supongamos que puede vivir 100 años).
-
-```py
-Introduce cuántos años has vivido: 100
-Has vivido 3153600000 segundos.
-```
-
-23. Escribe un script en Python que muestre la siguiente tabla
-
-
-```py
-1 1 1 1 1
-2 1 2 4 8
-3 1 3 9 27
-4 1 4 16 64
-5 1 5 25 125
-```
-
-🎉 ¡Felicidades! 🎉
-
-[<< Día 2](./02_variables_builtin_functions_sp.md) | [Día 4 >>](./04_strings_sp.md)
diff --git a/Spanish/04_strings_sp.md b/Spanish/04_Day_Strings/04_strings.md
similarity index 98%
rename from Spanish/04_strings_sp.md
rename to Spanish/04_Day_Strings/04_strings.md
index 2a0c16284..796f34ee5 100644
--- a/Spanish/04_strings_sp.md
+++ b/Spanish/04_Day_Strings/04_strings.md
@@ -14,9 +14,9 @@
-[<< Día 3](./03_operators_sp.md) | [Día 5 >>](./05_lists_sp.md)
+[<< Día 3](../03_Day_Operators/03_operators.md) | [Día 5 >>](../05_Day_Lists/05_lists.md)
-
+
_Lectura aproximada: 20 min_
@@ -232,7 +232,7 @@ print(f) # n
En programación la indexación comienza en cero. Por tanto, la primera letra está en el índice 0 y la última en la longitud de la cadena menos uno.
-
+
```py
language = 'Python'
@@ -603,6 +603,4 @@ area = 3.14 * radius ** 2
🎉 ¡Felicidades! 🎉
-[<< Día 3](./03_operators_sp.md) | [Día 5 >>](./05_lists_sp.md)
-
-
+[<< Día 3](../03_Day_Operators/03_operators.md) | [Día 5 >>](../05_Day_Lists/05_lists.md)
\ No newline at end of file
diff --git a/Spanish/04_Day_Strings/day_4.py b/Spanish/04_Day_Strings/day_4.py
new file mode 100644
index 000000000..54e59464b
--- /dev/null
+++ b/Spanish/04_Day_Strings/day_4.py
@@ -0,0 +1,250 @@
+
+# Single line comment
+letter = 'P' # A string could be a single character or a bunch of texts
+print(letter) # P
+print(len(letter)) # 1
+greeting = 'Hello, World!' # String could be a single or double quote,"Hello, World!"
+print(greeting) # Hello, World!
+print(len(greeting)) # 13
+sentence = "I hope you are enjoying 30 days of python challenge"
+print(sentence)
+
+# Multiline String
+multiline_string = '''I am a teacher and enjoy teaching.
+I didn't find anything as rewarding as empowering people.
+That is why I created 30 days of python.'''
+print(multiline_string)
+# Another way of doing the same thing
+multiline_string = """I am a teacher and enjoy teaching.
+I didn't find anything as rewarding as empowering people.
+That is why I created 30 days of python."""
+print(multiline_string)
+
+# String Concatenation
+first_name = 'Asabeneh'
+last_name = 'Yetayeh'
+space = ' '
+full_name = first_name + space + last_name
+print(full_name) # Asabeneh Yetayeh
+# Checking length of a string using len() builtin function
+print(len(first_name)) # 8
+print(len(last_name)) # 7
+print(len(first_name) > len(last_name)) # True
+print(len(full_name)) # 15
+
+# Unpacking characters
+language = 'Python'
+a, b, c, d, e, f = language # unpacking sequence characters into variables
+print(a) # P
+print(b) # y
+print(c) # t
+print(d) # h
+print(e) # o
+print(f) # n
+
+# Accessing characters in strings by index
+language = 'Python'
+first_letter = language[0]
+print(first_letter) # P
+second_letter = language[1]
+print(second_letter) # y
+last_index = len(language) - 1
+last_letter = language[last_index]
+print(last_letter) # n
+
+# If we want to start from right end we can use negative indexing. -1 is the last index
+language = 'Python'
+last_letter = language[-1]
+print(last_letter) # n
+second_last = language[-2]
+print(second_last) # o
+
+# Slicing
+
+language = 'Python'
+# starts at zero index and up to 3 but not include 3
+first_three = language[0:3]
+last_three = language[3:6]
+print(last_three) # hon
+# Another way
+last_three = language[-3:]
+print(last_three) # hon
+last_three = language[3:]
+print(last_three) # hon
+
+# Skipping character while splitting Python strings
+language = 'Python'
+pto = language[0:6:2]
+print(pto) # pto
+
+# Escape sequence
+print('I hope every one enjoying the python challenge.\nDo you ?') # line break
+print('Days\tTopics\tExercises')
+print('Day 1\t3\t5')
+print('Day 2\t3\t5')
+print('Day 3\t3\t5')
+print('Day 4\t3\t5')
+print('This is a back slash symbol (\\)') # To write a back slash
+print('In every programming language it starts with \"Hello, World!\"')
+
+# String Methods
+# capitalize(): Converts the first character the string to Capital Letter
+
+challenge = 'thirty days of python'
+print(challenge.capitalize()) # 'Thirty days of python'
+
+# count(): returns occurrences of substring in string, count(substring, start=.., end=..)
+
+challenge = 'thirty days of python'
+print(challenge.count('y')) # 3
+print(challenge.count('y', 7, 14)) # 1
+print(challenge.count('th')) # 2`
+
+# endswith(): Checks if a string ends with a specified ending
+
+challenge = 'thirty days of python'
+print(challenge.endswith('on')) # True
+print(challenge.endswith('tion')) # False
+
+# expandtabs(): Replaces tab character with spaces, default tab size is 8. It takes tab size argument
+
+challenge = 'thirty\tdays\tof\tpython'
+print(challenge.expandtabs()) # 'thirty days of python'
+print(challenge.expandtabs(10)) # 'thirty days of python'
+
+# find(): Returns the index of first occurrence of substring
+
+challenge = 'thirty days of python'
+print(challenge.find('y')) # 5
+print(challenge.find('th')) # 0
+
+# format() formats string into nicer output
+first_name = 'Asabeneh'
+last_name = 'Yetayeh'
+job = 'teacher'
+country = 'Finland'
+sentence = 'I am {} {}. I am a {}. I live in {}.'.format(
+ first_name, last_name, job, country)
+print(sentence) # I am Asabeneh Yetayeh. I am a teacher. I live in Finland.
+
+radius = 10
+pi = 3.14
+area = pi # radius ## 2
+result = 'The area of circle with {} is {}'.format(str(radius), str(area))
+print(result) # The area of circle with 10 is 314.0
+
+# index(): Returns the index of substring
+challenge = 'thirty days of python'
+print(challenge.find('y')) # 5
+print(challenge.find('th')) # 0
+
+# isalnum(): Checks alphanumeric character
+
+challenge = 'ThirtyDaysPython'
+print(challenge.isalnum()) # True
+
+challenge = '30DaysPython'
+print(challenge.isalnum()) # True
+
+challenge = 'thirty days of python'
+print(challenge.isalnum()) # False
+
+challenge = 'thirty days of python 2019'
+print(challenge.isalnum()) # False
+
+# isalpha(): Checks if all characters are alphabets
+
+challenge = 'thirty days of python'
+print(challenge.isalpha()) # True
+num = '123'
+print(num.isalpha()) # False
+
+# isdecimal(): Checks Decimal Characters
+
+challenge = 'thirty days of python'
+print(challenge.find('y')) # 5
+print(challenge.find('th')) # 0
+
+# isdigit(): Checks Digit Characters
+
+challenge = 'Thirty'
+print(challenge.isdigit()) # False
+challenge = '30'
+print(challenge.isdigit()) # True
+
+# isdecimal():Checks decimal characters
+
+num = '10'
+print(num.isdecimal()) # True
+num = '10.5'
+print(num.isdecimal()) # False
+
+
+# isidentifier():Checks for valid identifier means it check if a string is a valid variable name
+
+challenge = '30DaysOfPython'
+print(challenge.isidentifier()) # False, because it starts with a number
+challenge = 'thirty_days_of_python'
+print(challenge.isidentifier()) # True
+
+
+# islower():Checks if all alphabets in a string are lowercase
+
+challenge = 'thirty days of python'
+print(challenge.islower()) # True
+challenge = 'Thirty days of python'
+print(challenge.islower()) # False
+
+# isupper(): returns if all characters are uppercase characters
+
+challenge = 'thirty days of python'
+print(challenge.isupper()) # False
+challenge = 'THIRTY DAYS OF PYTHON'
+print(challenge.isupper()) # True
+
+
+# isnumeric():Checks numeric characters
+
+num = '10'
+print(num.isnumeric()) # True
+print('ten'.isnumeric()) # False
+
+# join(): Returns a concatenated string
+
+web_tech = ['HTML', 'CSS', 'JavaScript', 'React']
+result = '#, '.join(web_tech)
+print(result) # 'HTML# CSS# JavaScript# React'
+
+# strip(): Removes both leading and trailing characters
+
+challenge = ' thirty days of python '
+print(challenge.strip('y')) # 5
+
+# replace(): Replaces substring inside
+
+challenge = 'thirty days of python'
+print(challenge.replace('python', 'coding')) # 'thirty days of coding'
+
+# split():Splits String from Left
+
+challenge = 'thirty days of python'
+print(challenge.split()) # ['thirty', 'days', 'of', 'python']
+
+# title(): Returns a Title Cased String
+
+challenge = 'thirty days of python'
+print(challenge.title()) # Thirty Days Of Python
+
+# swapcase(): Checks if String Starts with the Specified String
+
+challenge = 'thirty days of python'
+print(challenge.swapcase()) # THIRTY DAYS OF PYTHON
+challenge = 'Thirty Days Of Python'
+print(challenge.swapcase()) # tHIRTY dAYS oF pYTHON
+
+# startswith(): Checks if String Starts with the Specified String
+
+challenge = 'thirty days of python'
+print(challenge.startswith('thirty')) # True
+challenge = '30 days of python'
+print(challenge.startswith('thirty')) # False
diff --git a/Spanish/05_lists_sp.md b/Spanish/05_Day_Lists/05_lists.md
similarity index 98%
rename from Spanish/05_lists_sp.md
rename to Spanish/05_Day_Lists/05_lists.md
index 5a9237f9e..8e6cfb047 100644
--- a/Spanish/05_lists_sp.md
+++ b/Spanish/05_Day_Lists/05_lists.md
@@ -14,9 +14,9 @@
-[<< Día 4](./04_strings_sp.md) | [Día 6 >>](./06_tuples_sp.md)
+[<< Día 4](../04_Day_Strings/04_strings.md) | [Día 6 >>](../06_Day_Tuples/06_tuples.md)
-
+
- [Día 5](#día-5)
- [Listas](#listas)
@@ -131,7 +131,7 @@ Number of countries: 5
Usamos índices para acceder a los elementos de una lista. Los índices comienzan en 0. La imagen muestra claramente dónde empiezan los índices.
-
+
```py
fruits = ['banana', 'orange', 'mango', 'lemon']
@@ -150,7 +150,7 @@ last_fruit = fruits[last_index]
Los índices negativos cuentan desde el final; `-1` es el último elemento, `-2` el penúltimo.
-
+
```py
fruits = ['banana', 'orange', 'mango', 'lemon']
@@ -593,4 +593,4 @@ ages = [19, 22, 19, 24, 20, 25, 26, 24, 25, 24]
🎉 ¡Felicidades! 🎉
-[<< Día 4](./04_strings_sp.md) | [Día 6 >>](./06_tuples_sp.md)
+[<< Día 4](../04_Day_Strings/04_strings.md) | [Día 6 >>](../06_Day_Tuples/06_tuples.md)
diff --git a/Spanish/05_Day_Lists/day_5.py b/Spanish/05_Day_Lists/day_5.py
new file mode 100644
index 000000000..6b9c2a1f7
--- /dev/null
+++ b/Spanish/05_Day_Lists/day_5.py
@@ -0,0 +1,185 @@
+empty_list = list() # this is an empty list, no item in the list
+print(len(empty_list)) # 0
+
+# list of fruits
+fruits = ['banana', 'orange', 'mango', 'lemon']
+vegetables = ['Tomato', 'Potato', 'Cabbage',
+ 'Onion', 'Carrot'] # list of vegetables
+animal_products = ['milk', 'meat', 'butter',
+ 'yoghurt'] # list of animal products
+web_techs = ['HTML', 'CSS', 'JS', 'React', 'Redux',
+ 'Node', 'MongDB'] # list of web technologies
+countries = ['Finland', 'Estonia', 'Denmark', 'Sweden', 'Norway']
+
+# Print the lists and it length
+print('Fruits:', fruits)
+print('Number of fruits:', len(fruits))
+print('Vegetables:', vegetables)
+print('Number of vegetables:', len(vegetables))
+print('Animal products:', animal_products)
+print('Number of animal products:', len(animal_products))
+print('Web technologies:', web_techs)
+print('Number of web technologies:', len(web_techs))
+print('Number of countries:', len(countries))
+
+# Modifying list
+
+fruits = ['banana', 'orange', 'mango', 'lemon']
+first_fruit = fruits[0] # we are accessing the first item using its index
+print(first_fruit) # banana
+second_fruit = fruits[1]
+print(second_fruit) # orange
+last_fruit = fruits[3]
+print(last_fruit) # lemon
+# Last index
+last_index = len(fruits) - 1
+last_fruit = fruits[last_index]
+
+# Accessing itmes
+fruits = ['banana', 'orange', 'mango', 'lemon']
+last_fruit = fruits[-1]
+second_last = fruits[-2]
+print(last_fruit) # lemon
+print(second_last) # mango
+
+# Slicing items
+fruits = ['banana', 'orange', 'mango', 'lemon']
+all_fruits = fruits[0:4] # it returns all the fruits
+# this is also give the same result as the above
+all_fruits = fruits[0:] # if we don't set where to stop it takes all the rest
+orange_and_mango = fruits[1:3] # it does not include the end index
+orange_mango_lemon = fruits[1:]
+
+fruits = ['banana', 'orange', 'mango', 'lemon']
+all_fruits = fruits[-4:] # it returns all the fruits
+# this is also give the same result as the above
+orange_and_mango = fruits[-3:-1] # it does not include the end index
+orange_mango_lemon = fruits[-3:]
+
+
+fruits = ['banana', 'orange', 'mango', 'lemon']
+fruits[0] = 'Avocado'
+print(fruits) # ['avocado', 'orange', 'mango', 'lemon']
+fruits[1] = 'apple'
+print(fruits) # ['avocado', 'apple', 'mango', 'lemon']
+last_index = len(fruits)
+fruits[last_index] = 'lime'
+print(fruits) # ['avocado', 'apple', 'mango', 'lime']
+
+# checking items
+fruits = ['banana', 'orange', 'mango', 'lemon']
+does_exist = 'banana' in fruits
+print(does_exist) # True
+does_exist = 'lime' in fruits
+print(does_exist) # False
+
+# Append
+fruits = ['banana', 'orange', 'mango', 'lemon']
+fruits.append('apple')
+print(fruits) # ['banana', 'orange', 'mango', 'lemon', 'apple']
+# ['banana', 'orange', 'mango', 'lemon', 'apple', 'lime]
+fruits.append('lime')
+print(fruits)
+
+# insert
+fruits = ['banana', 'orange', 'mango', 'lemon']
+fruits.insert(2, 'apple') # insert apple between orange and mango
+print(fruits) # ['banana', 'orange', 'apple', 'mango', 'lemon']
+# ['banana', 'orange', 'apple', 'mango', 'lime','lemon',]
+fruits.list(3, 'lime')
+print(fruits)
+
+# remove
+fruits = ['banana', 'orange', 'mango', 'lemon']
+fruits.remove('banana')
+print(fruits) # ['orange', 'mango', 'lemon']
+fruits.remove('lemon')
+print(fruits) # ['orange', 'mango']
+
+# pop
+fruits = ['banana', 'orange', 'mango', 'lemon']
+fruits.remove()
+print(fruits) # ['banana', 'orange', 'mango']
+
+fruits.remove(0)
+print(fruits) # ['orange', 'mango']
+
+# del
+fruits = ['banana', 'orange', 'mango', 'lemon']
+del fruits[0]
+print(fruits) # ['orange', 'mango', 'lemon']
+
+del fruits[1]
+print(fruits) # ['orange', 'lemon']
+del fruits
+print(fruits) # This should give: NameError: name 'fruits' is not defined
+
+# clear
+fruits = ['banana', 'orange', 'mango', 'lemon']
+fruits.clear()
+print(fruits) # []
+
+# copying a lits
+
+fruits = ['banana', 'orange', 'mango', 'lemon']
+fruits_copy = fruits.copy()
+print(fruits_copy) # ['banana', 'orange', 'mango', 'lemon']
+
+# join
+positive_numbers = [1, 2, 3, 4, 5]
+zero = [0]
+negative_numbers = [-5, -4, -3, -2, -1]
+integers = negative_numbers + zero + positive_numbers
+print(integers)
+fruits = ['banana', 'orange', 'mango', 'lemon']
+vegetables = ['Tomato', 'Potato', 'Cabbage', 'Onion', 'Carrot']
+fruits_and_vegetables = fruits + vegetables
+print(fruits_and_vegetables)
+
+# join with extend
+num1 = [0, 1, 2, 3]
+num2 = [4, 5, 6]
+num1.extend(num2)
+print('Numbers:', num1)
+negative_numbers = [-5, -4, -3, -2, -1]
+positive_numbers = [1, 2, 3, 4, 5]
+zero = [0]
+
+negative_numbers.extend(zero)
+negative_numbers.extend(positive_numbers)
+print('Integers:', negative_numbers)
+fruits = ['banana', 'orange', 'mango', 'lemon']
+vegetables = ['Tomato', 'Potato', 'Cabbage', 'Onion', 'Carrot']
+fruits.extend(vegetables)
+print('Fruits and vegetables:', fruits)
+
+# count
+fruits = ['banana', 'orange', 'mango', 'lemon']
+print(fruits.count('orange')) # 1
+ages = [22, 19, 24, 25, 26, 24, 25, 24]
+print(ages.count(24)) # 3
+
+# index
+fruits = ['banana', 'orange', 'mango', 'lemon']
+print(fruits.index('orange')) # 1
+ages = [22, 19, 24, 25, 26, 24, 25, 24]
+print(ages.index(24))
+# Reverse
+fruits = ['banana', 'orange', 'mango', 'lemon']
+fruits.reverse()
+print(fruits.reverse())
+ages = [22, 19, 24, 25, 26, 24, 25, 24]
+ages.reverse()
+print(ages.reverse())
+
+# sort
+fruits = ['banana', 'orange', 'mango', 'lemon']
+fruits.sort()
+print(fruits)
+fruits.sort(reverse=True)
+print(fruits)
+ages = [22, 19, 24, 25, 26, 24, 25, 24]
+ages.sort()
+print(ages)
+ages.sort(reverse=True)
+print(ages)
diff --git a/Spanish/06_tuples_sp.md b/Spanish/06_Day_Tuples/06_tuples.md
similarity index 95%
rename from Spanish/06_tuples_sp.md
rename to Spanish/06_Day_Tuples/06_tuples.md
index e381563f0..1d23f690c 100644
--- a/Spanish/06_tuples_sp.md
+++ b/Spanish/06_Day_Tuples/06_tuples.md
@@ -14,9 +14,9 @@
-[<< Día 5](./05_lists_sp.md) | [Día 7 >>](./07_sets_sp.md)
+[<< Día 5](../05_Day_Lists/05_lists.md) | [Día 7 >>](../07_Day_Sets/07_sets.md)
-
+
- [Día 6](#día-6)
- [Tuplas](#tuplas)
@@ -80,7 +80,7 @@ len(tpl)
- Índices positivos
Al igual que con las listas, usamos índices positivos o negativos para acceder a los elementos de una tupla.
- 
+ 
```py
# Sintaxis
@@ -99,7 +99,7 @@ len(tpl)
- Índices negativos
Los índices negativos cuentan desde el final: -1 es el último elemento, -2 el penúltimo, y así sucesivamente.
- 
+ 
```py
# Sintaxis
@@ -255,4 +255,4 @@ del fruits
```
-[<< Día 5](./05_lists_sp.md) | [Día 7 >>](./07_sets_sp.md)
+[<< Día 5](../05_Day_Lists/05_lists.md) | [Día 7 >>](../07_Day_Sets/07_sets.md)
diff --git a/Spanish/07_sets_sp.md b/Spanish/07_Day_Sets/07_sets.md
similarity index 97%
rename from Spanish/07_sets_sp.md
rename to Spanish/07_Day_Sets/07_sets.md
index c429e294f..a925e45d0 100644
--- a/Spanish/07_sets_sp.md
+++ b/Spanish/07_Day_Sets/07_sets.md
@@ -14,9 +14,9 @@
-[<< Día 6](./06_tuples_sp.md) | [Día 8 >>](./08_dictionaries_sp.md)
+[<< Día 6](../06_Day_Tuples/06_tuples.md) | [Día 8 >>](../08_Day_Dictionaries/08_dictionaries.md)
-
+
- [📘 Día 7](#-día-7)
- [Conjuntos](#conjuntos)
@@ -429,4 +429,4 @@ age = [22, 19, 24, 25, 26, 24, 25, 24]
🎉 ¡Felicidades! 🎉
-[<< Día 6](./06_tuples_sp.md) | [Día 8 >>](./08_dictionaries_sp.md)
+[<< Día 6](../06_Day_Tuples/06_tuples.md) | [Día 8 >>](../08_Day_Dictionaries/08_dictionaries.md)
diff --git a/Spanish/08_dictionaries_sp.md b/Spanish/08_Day_Dictionaries/08_dictionaries.md
similarity index 97%
rename from Spanish/08_dictionaries_sp.md
rename to Spanish/08_Day_Dictionaries/08_dictionaries.md
index 30c9f5add..f33cb0072 100644
--- a/Spanish/08_dictionaries_sp.md
+++ b/Spanish/08_Day_Dictionaries/08_dictionaries.md
@@ -14,9 +14,9 @@
-[<< Día 7](./07_sets_sp.md) | [Día 9 >>](./09_conditionals_sp.md)
+[<< Día 7](../07_Day_Sets/07_sets.md) | [Día 9 >>](../09_Day_Conditionals/09_conditionals.md)
-
+
- [📘 Día 8](#-día-8)
- [Diccionarios](#diccionarios)
@@ -340,4 +340,4 @@ print(values) # dict_values(['value1', 'value2', 'value3', 'value4'])
🎉 ¡Felicidades! 🎉
-[<< Día 7](./07_sets_sp.md) | [Día 9 >>](./09_conditionals_sp.md)
+[<< Día 7](../07_Day_Sets/07_sets.md) | [Día 9 >>](../09_Day_Conditionals/09_conditionals.md)
diff --git a/Spanish/09_conditionals_sp.md b/Spanish/09_Day_Conditionals/09_conditionals.md
similarity index 96%
rename from Spanish/09_conditionals_sp.md
rename to Spanish/09_Day_Conditionals/09_conditionals.md
index 6f84f3abf..9402600e0 100644
--- a/Spanish/09_conditionals_sp.md
+++ b/Spanish/09_Day_Conditionals/09_conditionals.md
@@ -14,9 +14,9 @@
-[<< Día 8](./08_dictionaries_sp.md) | [Día 10 >>](./10_loops_sp.md)
+[<< Día 8](../08_Day_Dictionaries/08_dictionaries.md) | [Día 10 >>](../10_Day_Loops/10_loops.md)
-
+
- [📘 Día 9](#-día-9)
- [Sentencias condicionales](#sentencias-condicionales)
@@ -280,4 +280,4 @@ print('Asabeneh Yetayeh vive en Finlandia. Está casado.')
🎉 ¡Felicidades! 🎉
-[<< Día 8](./08_dictionaries_sp.md) | [Día 10 >>](./10_loops_sp.md)
+[<< Día 8](../08_Day_Dictionaries/08_dictionaries.md) | [Día 10 >>](../10_Day_Loops/10_loops.md)
diff --git a/Spanish/10_loops_sp.md b/Spanish/10_Day_Loops/10_loops.md
similarity index 97%
rename from Spanish/10_loops_sp.md
rename to Spanish/10_Day_Loops/10_loops.md
index 9761fa5eb..5b04de18b 100644
--- a/Spanish/10_loops_sp.md
+++ b/Spanish/10_Day_Loops/10_loops.md
@@ -14,9 +14,9 @@
-[<< Día 9](./09_conditionals_sp.md) | [Día 11 >>](./11_functions_sp.md)
+[<< Día 9](../09_Day_Conditionals/09_conditionals.md) | [Día 11 >>](../11_Day_Functions/11_functions.md)
-
+
- [📘 Día 10](#-día-10)
@@ -448,4 +448,4 @@ for number in range(6):
🎉 ¡Felicidades! 🎉
-[<< Día 9](./09_conditionals_sp.md) | [Día 11 >>](./11_functions_sp.md)
\ No newline at end of file
+[<< Día 9](../09_Day_Conditionals/09_conditionals.md) | [Día 11 >>](../11_Day_Functions/11_functions.md)
\ No newline at end of file
diff --git a/Spanish/11_functions_sp.md b/Spanish/11_Day_Functions/11_functions.md
similarity index 98%
rename from Spanish/11_functions_sp.md
rename to Spanish/11_Day_Functions/11_functions.md
index 75a9c716e..1dc85104e 100644
--- a/Spanish/11_functions_sp.md
+++ b/Spanish/11_Day_Functions/11_functions.md
@@ -14,9 +14,9 @@
-[<< Día 10](./10_loops_sp.md) | [Día 12 >>](./12_modules_sp.md)
+[<< Día 10](../10_Day_Loops/10_loops.md) | [Día 12 >>](../12_Day_Modules/12_modules.md)
-
+
- [📘 Día 11](#-día-11)
- [Funciones](#funciones)
@@ -455,4 +455,4 @@ print(sum_all_numbers(100)) # 5050
🎉 ¡Felicidades! 🎉
-[<< Día 10](./10_loops_sp.md) | [Día 12 >>](./12_modules_sp.md)
+[<< Día 10](../10_Day_Loops/10_loops.md) | [Día 12 >>](../12_Day_Modules/12_modules.md)
diff --git a/Spanish/12_modules_sp.md b/Spanish/12_Day_Modules/12_modules.md
similarity index 96%
rename from Spanish/12_modules_sp.md
rename to Spanish/12_Day_Modules/12_modules.md
index 085a0258a..ee759d2e2 100644
--- a/Spanish/12_modules_sp.md
+++ b/Spanish/12_Day_Modules/12_modules.md
@@ -1,5 +1,5 @@
-
30 Días de Python: Día 12 - Módulos
+ 30 días de Python: Día 12 - Módulos
@@ -14,9 +14,9 @@
-[<< Día 11](./11_functions_sp.md) | [Día 13 >>](./13_list_comprehension_sp.md)
+[<< Día 11](../11_Day_Functions/11_functions.md) | [Día 13 >>](../13_Day_List_comprehension/13_list_comprehension.md)
-
+
- [📘 Día 12](#-día-12)
- [Módulos](#módulos)
@@ -299,4 +299,4 @@ print(rgb_color_gen())
🎉 ¡Felicidades! 🎉
-[<< Día 11](./11_functions_sp.md) | [Día 13 >>](./13_list_comprehension_sp.md)
+[<< Día 11](../11_Day_Functions/11_functions.md) | [Día 13 >>](../13_Day_List_comprehension/13_list_comprehension.md)
diff --git a/Spanish/12_Day_Modules/main.py b/Spanish/12_Day_Modules/main.py
new file mode 100644
index 000000000..e5e3e416e
--- /dev/null
+++ b/Spanish/12_Day_Modules/main.py
@@ -0,0 +1,10 @@
+
+from mymodule import generate_full_name as fullname, sum_two_nums as total, person as p, gravity as g
+print(fullname('Asabneh','Yetayeh'))
+print(total(1, 9))
+mass = 100
+print(mass)
+weight = mass * g
+print(weight)
+print(p)
+print(p['firstname'])
\ No newline at end of file
diff --git a/Spanish/12_Day_Modules/mymodule.py b/Spanish/12_Day_Modules/mymodule.py
new file mode 100644
index 000000000..127ab21f1
--- /dev/null
+++ b/Spanish/12_Day_Modules/mymodule.py
@@ -0,0 +1,16 @@
+def generate_full_name(firstname, lastname):
+ space = ' '
+ fullname = firstname + space + lastname
+ return fullname
+
+def sum_two_nums (num1, num2):
+ return num1 + num2
+gravity = 9.81
+person = {
+ "firstname": "Asabeneh",
+ "age": 250,
+ "country": "Finland",
+ "city":'Helsinki'
+}
+
+
diff --git a/Spanish/13_list_comprehension_sp.md b/Spanish/13_Day_List_comprehension/13_list_comprehension.md
similarity index 94%
rename from Spanish/13_list_comprehension_sp.md
rename to Spanish/13_Day_List_comprehension/13_list_comprehension.md
index b0e00d35c..e02856397 100644
--- a/Spanish/13_list_comprehension_sp.md
+++ b/Spanish/13_Day_List_comprehension/13_list_comprehension.md
@@ -1,5 +1,5 @@
-
30 Días de Python: Día 13 - Comprensiones de listas
+ 30 días de Python: Día 13 - Comprensiones de listas
@@ -14,9 +14,9 @@
-[<< Día 12](./12_modules_sp.md) | [Día 14 >>](./14_higher_order_functions_sp.md)
+[<< Día 12](../12_Day_Modules/12_modules.md) | [Día 14 >>](../14_Day_Higher_order_functions/14_higher_order_functions.md)
-
+
- [📘 Día 13](#📘-día-13)
- [Comprensiones de listas](#comprensiones-de-listas)
@@ -204,4 +204,4 @@ print(two_power_of_five) # 32
🎉 ¡Felicidades! 🎉
-[<< Día 12](./12_modules_sp.md) | [Día 14 >>](./14_higher_order_functions_sp.md)
+[<< Día 12](../12_Day_Modules/12_modules.md) | [Día 14 >>](../14_Day_Higher_order_functions/14_higher_order_functions.md)
diff --git a/Spanish/14_higher_order_functions_sp.md b/Spanish/14_Day_Higher_order_functions/14_higher_order_functions.md
similarity index 96%
rename from Spanish/14_higher_order_functions_sp.md
rename to Spanish/14_Day_Higher_order_functions/14_higher_order_functions.md
index d4e0e9101..66b8d2ac6 100644
--- a/Spanish/14_higher_order_functions_sp.md
+++ b/Spanish/14_Day_Higher_order_functions/14_higher_order_functions.md
@@ -1,5 +1,5 @@
-
30 Días de Python: Día 14 - Funciones de orden superior
+ 30 días de Python: Día 14 - Funciones de orden superior
@@ -14,9 +14,9 @@
-[<< Día 13](./13_list_comprehension_sp.md) | [Día 15 >>](./15_python_type_errors_cn_sp.md)
+[<< Día 13](../13_Day_List_comprehension/13_list_comprehension.md) | [Día 15 >>](../15_Day_Python_type_errors/15_python_type_errors.md)
-
+
- [📘 Día 14](#-día-14)
- [Funciones de orden superior](#funciones-de-orden-superior)
@@ -367,4 +367,4 @@ numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
🎉 ¡Felicidades! 🎉
-[<< Día 13](./13_list_comprehension_sp.md) | [Día 15 >>](./15_python_type_errors_cn_sp.md)
+[<< Día 13](../13_Day_List_comprehension/13_list_comprehension.md) | [Día 15 >>](../15_Day_Python_type_errors/15_python_type_errors.md)
diff --git a/Spanish/15_python_type_errors_sp.md b/Spanish/15_Day_Python_type_errors/15_python_type_errors.md
similarity index 91%
rename from Spanish/15_python_type_errors_sp.md
rename to Spanish/15_Day_Python_type_errors/15_python_type_errors.md
index f11334efa..bfeb80088 100644
--- a/Spanish/15_python_type_errors_sp.md
+++ b/Spanish/15_Day_Python_type_errors/15_python_type_errors.md
@@ -1,6 +1,24 @@
-# Desafío de programación Python: Día 15 - Errores (excepciones) en Python
+
+
30 días de Python: Día 15 - Errores de tipo
+
+
-- [Día 15](#día-15)
+
Autor:
+ Asabeneh Yetayeh
+ Segunda edición: julio de 2021
+
+
+
+
+[<< Día 14](../14_Day_Higher_order_functions/14_higher_order_functions.md) | [Día 16 >>](../16_Day_Python_date_time/16_python_datetime.md)
+
+
+
+- [📘 Día 15](#día-15)
- [Tipos de error en Python](#tipos-de-error-en-python)
- [SyntaxError (Error de sintaxis)](#syntaxerror-error-de-sintaxis)
- [NameError (Error de nombre)](#nameerror-error-de-nombre)
@@ -340,4 +358,4 @@ Hemos revisado varios tipos de errores en Python; para más información, consul
🎉 ¡Felicidades! 🎉
-[<< Día 14](./14_higher_order_functions_sp.md) | [Día 16 >>](./16_python_datetime_sp.md)
\ No newline at end of file
+[<< Día 14](../14_Day_Higher_order_functions/14_higher_order_functions.md) | [Día 16 >>](../16_Day_Python_date_time/16_python_datetime.md)
\ No newline at end of file
diff --git a/Spanish/16_python_datetime_sp.md b/Spanish/16_Day_Python_date_time/16_python_datetime.md
similarity index 84%
rename from Spanish/16_python_datetime_sp.md
rename to Spanish/16_Day_Python_date_time/16_python_datetime.md
index a76ab2a9a..03ff45d73 100644
--- a/Spanish/16_python_datetime_sp.md
+++ b/Spanish/16_Day_Python_date_time/16_python_datetime.md
@@ -1,6 +1,25 @@
-# 30 Días de Python: Día 16 - datetime en Python
+
+
30 días de Python: Día 16 - Fechas y horas en Python
+
+
-- [Día 16](#-día-16)
+
Autor:
+ Asabeneh Yetayeh
+ Segunda edición: julio de 2021
+
+
+
+
+[<< Día 15](../15_Day_Python_type_errors/15_python_type_errors.md) | [Día 17 >>](../17_Day_Exception_handling/17_exception_handling.md)
+
+
+
+
+- [📘 Día 16](#-día-16)
- [Python *datetime*](#python-datetime)
- [Obtener información de *datetime*](#obtener-información-de-datetime)
- [Formatear fecha con *strftime*](#formatear-fecha-con-strftime)
@@ -86,7 +105,7 @@ Formato dos: 05/12/2019, 01:05:01
A continuación se muestran los símbolos de _strftime_ usados para formatear tiempos, como se ve en la imagen de referencia.
-
+
### Convertir cadena a fecha con *strptime*
Aquí hay una [guía](https://www.programiz.com/python-programming/datetime/strptimet) que ayuda a entender los formatos.
@@ -189,4 +208,4 @@ t3 = 86 days, 22:56:50
🎉 ¡Felicidades! 🎉
-[<< Día 15](./15_python_type_errors_sp.md) | [Día 17 >>](./17_exception_handling_sp.md)
\ No newline at end of file
+[<< Día 15](../15_Day_Python_type_errors/15_python_type_errors.md) | [Día 17 >>](../17_Day_Exception_handling/17_exception_handling.md)
\ No newline at end of file
diff --git a/Spanish/17_exception_handling_sp.md b/Spanish/17_Day_Exception_handling/17_exception_handling.md
similarity index 88%
rename from Spanish/17_exception_handling_sp.md
rename to Spanish/17_Day_Exception_handling/17_exception_handling.md
index 2e9192c5a..5c8450021 100644
--- a/Spanish/17_exception_handling_sp.md
+++ b/Spanish/17_Day_Exception_handling/17_exception_handling.md
@@ -1,6 +1,23 @@
-# 30 Días de Python: Día 17 - Manejo de excepciones
-
-- [Día 17](#-día-17)
+
+
30 días de Python: Día 17 - Manejo de excepciones
+
+
+
+
Autor:
+ Asabeneh Yetayeh
+ Segunda edición: julio de 2021
+
+
+
+[<< Día 16](../16_Day_Python_date_time/16_python_datetime.md) | [Día 18 >>](../18_Day_Regular_expressions/18_regular_expressions.md)
+
+
+
+- [📘 Día 17](#-día-17)
- [Manejo de excepciones](#manejo-de-excepciones)
- [Empacar y desempacar parámetros en Python](#empacar-y-desempacar-parámetros-en-python)
- [Desempaquetado](#desempaquetado)
@@ -22,7 +39,7 @@ Python utiliza _try_ y _except_ para manejar errores de forma elegante. Salir de
En la sección anterior hemos cubierto los distintos tipos de errores en Python. Si usamos _try_ y _except_ correctamente, podemos impedir que esos errores hagan que el programa falle.
-
+
```py
try:
@@ -281,4 +298,4 @@ print(fruits_and_veges)
🎉 ¡Felicidades! 🎉
-[<< Día 16](./16_python_datetime_sp.md) | [Día 18 >>](./18_regular_expressions_sp.md)
\ No newline at end of file
+[<< Día 16](../16_Day_Python_date_time/16_python_datetime.md) | [Día 18 >>](../18_Day_Regular_expressions/18_regular_expressions.md)
\ No newline at end of file
diff --git a/Spanish/18_regular_expressions_sp.md b/Spanish/18_Day_Regular_expressions/18_regular_expressions.md
similarity index 94%
rename from Spanish/18_regular_expressions_sp.md
rename to Spanish/18_Day_Regular_expressions/18_regular_expressions.md
index d4e452f49..92bc1f6fe 100644
--- a/Spanish/18_regular_expressions_sp.md
+++ b/Spanish/18_Day_Regular_expressions/18_regular_expressions.md
@@ -1,6 +1,24 @@
-# 30 Días de Python: Día 18 - Expresiones regulares
+
+
30 días de Python: Día 18 - Expresines Regulares
+
+
-- [Día 18](#-día-18)
+
Autor:
+ Asabeneh Yetayeh
+ Primera Edición: Nov 22 - Dic 22, 2019
+
+
+
+
+[<< Día 17](../17_Day_Exception_handling/17_exception_handling.md) | [Día 19>>](../19_Day_File_handling/19_file_handling.md)
+
+
+
+- [📘 Día 18](#-día-18)
- [Expresiones regulares](#expresiones-regulares)
- [Módulo *re*](#módulo-re)
- [Métodos en el módulo *re*](#métodos-en-el-módulo-re)
@@ -406,4 +424,4 @@ alex@yahoo
🎉 ¡Felicidades! 🎉
-[<< Día 17](./17_exception_handling_sp.md) | [Día 19 >>](./19_file_handling_sp.md)
\ No newline at end of file
+[<< Día 17](../17_Day_Exception_handling/17_exception_handling.md) | [Día 19 >>](../19_Day_File_handling/19_file_handling.md)
\ No newline at end of file
diff --git a/Spanish/19_file_handling_sp.md b/Spanish/19_Day_File_handling/19_file_handling.md
similarity index 93%
rename from Spanish/19_file_handling_sp.md
rename to Spanish/19_Day_File_handling/19_file_handling.md
index 6711cf7f2..24c26e9f4 100644
--- a/Spanish/19_file_handling_sp.md
+++ b/Spanish/19_Day_File_handling/19_file_handling.md
@@ -1,6 +1,22 @@
-# 30 Días de Python: Día 19 - Manejo de archivos
-
-- [Día 19](#-día-19)
+
+
30 días de Python: Día 19 - Manejo de archivos
+
+
+
Autor:
+Asabeneh Yetayeh
+Segunda edición: julio de 2021
+
+
+
+[<< Día 18](../18_Day_Regular_expressions/18_regular_expressions.md) | [Día 20 >>](../20_Day_Python_package_manager/20_python_package_manager.md)
+
+
+
+- [📘 Día 19](#-día-19)
- [Manejo de archivos](#manejo-de-archivos)
- [Abrir un archivo para lectura](#abrir-un-archivo-para-lectura)
- [Abrir un archivo para escritura y actualización](#abrir-un-archivo-para-escritura-y-actualización)
@@ -523,4 +539,4 @@ Python
🎉 ¡Felicidades! 🎉
-[<< Día 18](./18_regular_expressions_sp.md) | [Día 20 >>](./20_python_package_manager_sp.md)
\ No newline at end of file
+[<< Día 18](../18_Day_Regular_expressions/18_regular_expressions.md) | [Día 20 >>](../20_Day_Python_package_manager/20_python_package_manager.md)
\ No newline at end of file
diff --git a/Spanish/20_python_package_manager_sp.md b/Spanish/20_Day_Python_package_manager/20_python_package_manager.md
similarity index 88%
rename from Spanish/20_python_package_manager_sp.md
rename to Spanish/20_Day_Python_package_manager/20_python_package_manager.md
index efebceb95..78582c351 100644
--- a/Spanish/20_python_package_manager_sp.md
+++ b/Spanish/20_Day_Python_package_manager/20_python_package_manager.md
@@ -1,6 +1,23 @@
-# 30 Días de Python: Día 20 - PIP
-
-- [Día 20](#-día-20)
+
+
30 días de Python: Día 20 - PIP
+
+
+
+
Autor:
+Asabeneh Yetayeh
+Segunda edición: julio de 2021
+
+
+
+[<< Día 19](../19_Day_File_handling/19_file_handling.md) | [Día 21 >>](../21_Day_Classes_and_objects/21_classes_and_objects.md)
+
+
+
+- [📘 Día 20](#-día-20)
- [Python PIP - Gestor de paquetes de Python](#python-pip---gestor-de-paquetes-de-python)
- [¿Qué es PIP?](#¿qué-es-pip)
- [Instalar PIP](#instalar-pip)
@@ -12,7 +29,7 @@
- [Leer datos desde una URL](#leer-datos-desde-una-url)
- [Crear paquetes](#crear-paquetes)
- [Más información sobre paquetes](#más-información-sobre-paquetes)
- - [Ejercicios: Día 20](#ejercicios-día-20)
+ - [💻 Ejercicios: Día 20](#ejercicios-día-20)
# 📘 Día 20
@@ -305,4 +322,4 @@ print(greet.greet_person('Juan', 'Pérez'))
🎉 ¡Felicidades! 🎉
-[<< Día 19](./19_file_handling_sp.md) | [Día 21 >>](./21_classes_and_objects_sp.md)
\ No newline at end of file
+[<< Día 19](../19_Day_File_handling/19_file_handling.md) | [Día 21 >>](../21_Day_Classes_and_objects/21_classes_and_objects.md)
\ No newline at end of file
diff --git a/Spanish/20_Day_Python_package_manager/__init__.py b/Spanish/20_Day_Python_package_manager/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/Spanish/20_Day_Python_package_manager/arithmetic.py b/Spanish/20_Day_Python_package_manager/arithmetic.py
new file mode 100644
index 000000000..bdb5c1fb2
--- /dev/null
+++ b/Spanish/20_Day_Python_package_manager/arithmetic.py
@@ -0,0 +1,25 @@
+def add_numbers(*args):
+ total = 0
+ for num in args:
+ total += num
+ return total
+
+
+def subtract(a, b):
+ return (a - b)
+
+
+def multiple(a, b):
+ return a * b
+
+
+def division(a, b):
+ return a / b
+
+
+def remainder(a, b):
+ return a % b
+
+
+def power(a, b):
+ return a ** b
\ No newline at end of file
diff --git a/Spanish/20_Day_Python_package_manager/greet.py b/Spanish/20_Day_Python_package_manager/greet.py
new file mode 100644
index 000000000..997787d11
--- /dev/null
+++ b/Spanish/20_Day_Python_package_manager/greet.py
@@ -0,0 +1,2 @@
+def greet_person(firstname, lastname):
+ return f'{firstname} {lastname}, welcome to 30DaysOfPython Challenge!'
\ No newline at end of file
diff --git a/Spanish/21_classes_and_objects_sp.md b/Spanish/21_Day_Classes_and_objects/21_classes_and_objects.md
similarity index 92%
rename from Spanish/21_classes_and_objects_sp.md
rename to Spanish/21_Day_Classes_and_objects/21_classes_and_objects.md
index 804d40ced..a28b008d7 100644
--- a/Spanish/21_classes_and_objects_sp.md
+++ b/Spanish/21_Day_Classes_and_objects/21_classes_and_objects.md
@@ -1,6 +1,24 @@
-# 30 Días de Python: Día 21 - Clases y Objetos
+
+
30 días de Python: Día 21 - Clases y Objetos
+
+
-- [Día 21](#-día-21)
+
Autor:
+Asabeneh Yetayeh
+Segunda edición: julio de 2021
+
+
+
+
+[<< Día 20](../20_Day_Python_package_manager/20_python_package_manager.md) | [Día 22 >>](../22_Day_Web_scraping/22_web_scraping.md)
+
+
+
+- [📘 Día 21](#-día-21)
- [Clases y objetos](#clases-y-objetos)
- [Crear una clase](#crear-una-clase)
- [Crear un objeto](#crear-un-objeto)
@@ -413,4 +431,4 @@ juice: orange
🎉 ¡Felicidades! 🎉
-[<< Día 20](./20_python_package_manager_sp.md) | [Día 22 >>](./22_web_scraping_sp.md)
\ No newline at end of file
+[<< Día 20](../20_Day_Python_package_manager/20_python_package_manager.md) | [Día 22 >>](../22_Day_Web_scraping/22_web_scraping.md)
\ No newline at end of file
diff --git a/Spanish/22_web_scraping_sp.md b/Spanish/22_Day_Web_scraping/22_web_scraping.md
similarity index 76%
rename from Spanish/22_web_scraping_sp.md
rename to Spanish/22_Day_Web_scraping/22_web_scraping.md
index 43e5b858a..34baa4d38 100644
--- a/Spanish/22_web_scraping_sp.md
+++ b/Spanish/22_Day_Web_scraping/22_web_scraping.md
@@ -1,6 +1,23 @@
-# 30 Días de Python: Día 22 - Web scraping
-
-- [Día 22](#-día-22)
+
+
30 días de Python: Día 22 - Web scraping
+
+
+
+
Autor:
+Asabeneh Yetayeh
+ Segunda edición: julio de 2021
+
+
+
+[<< Día 21](../21_Day_Classes_and_objects/21_classes_and_objects.md) | [Día 23 >>](../23_Day_Virtual_environment/23_virtual_environment.md)
+
+
+
+- [📘 Día 22](#-día-22)
- [Web scraping con Python](#web-scraping-con-python)
- [¿Qué es el web scraping?](#qué-es-el-web-scraping)
- [💻 Ejercicios: Día 22](#-ejercicios-día-22)
@@ -86,4 +103,4 @@ Consulta la documentación de BeautifulSoup para más detalles: https://www.crum
🎉 ¡Felicidades!🎉
-[<< Día 21](./21_classes_and_objects_sp.md) | [Día 23 >>](./23_virtual_environment_sp.md)
\ No newline at end of file
+[<< Día 21](../21_Day_Classes_and_objects/21_classes_and_objects.md) | [Día 23 >>](../23_Day_Virtual_environment/23_virtual_environment.md)
\ No newline at end of file
diff --git a/Spanish/22_Day_Web_scraping/scrapped_data.json b/Spanish/22_Day_Web_scraping/scrapped_data.json
new file mode 100644
index 000000000..5a1f226e5
--- /dev/null
+++ b/Spanish/22_Day_Web_scraping/scrapped_data.json
@@ -0,0 +1,73 @@
+[
+ {
+ "category": "Community",
+ "Student Body": "34,589",
+ "Living Alumni": "398,195",
+ "Total Employees": "10,517",
+ "Faculty": "4,171",
+ "Nondegree Students": "2,008",
+ "Graduate & Professional Students": "15,645",
+ "Undergraduate Students": "16,936"
+ },
+ {
+ "category": "Campus",
+ "Classrooms": "834",
+ "Buildings": "370",
+ "Laboratories": "1,681",
+ "Libraries": "21",
+ "Campus Area (acres)": "169"
+ },
+ {
+ "category": "Academics",
+ "Study Abroad Programs": "70+",
+ "Average Class Size": "27",
+ "Faculty": "4,171",
+ "Student/Faculty Ratio": "10:1",
+ "Schools and Colleges": "17",
+ "Programs of Study": "300+"
+ },
+ {
+ "category": "Grant & Contract Awards",
+ "Research Awards": "$574.1M",
+ "BMC Clinical Research Grants": "$88.0M"
+ },
+ {
+ "category": "Undergraduate Financial Aid & Scholarships",
+ "Average Total Need-Based Financial Aid": "$46,252",
+ "Average Need-Based Grant/Scholarship": "$40,969",
+ "Grants & Scholarships (need-based)": "$275.6M",
+ "Grants & Scholarships (non-need-based)": "$28.7M"
+ },
+ {
+ "category": "Student Life",
+ "Community Service Hours": "1.6M+",
+ "Alternative Service Breaks Participants": "300+",
+ "BU on Social": "new accounts daily",
+ "Cultural & Religious Organizations": "60+",
+ "Community Service & Justice Organizations": "80+",
+ "Academic & Professional Organizations": "120+",
+ "Art & Performance Organizations": "60+",
+ "Student Organizations": "450+",
+ "First-Year Student Outreach Project Volunteers": "800+"
+ },
+ {
+ "category": "Research",
+ "Faculty Publications": "6,000+",
+ "Student UROP Participants": "450+",
+ "Centers & Institutes": "130+"
+ },
+ {
+ "category": "International Community",
+ "Global Initiatives": "300+",
+ "Cultural Student Groups": "40+",
+ "Alumni Countries": "180+",
+ "International Students": "11,000+"
+ },
+ {
+ "category": "Athletics",
+ "Intramural Sports & Tournaments": "15+",
+ "Club and Intramural Sports Participants": "7,000+",
+ "Club Sports Teams": "50",
+ "Varsity Sports": "24"
+ }
+]
\ No newline at end of file
diff --git a/Spanish/23_virtual_environment_sp.md b/Spanish/23_Day_Virtual_environment/23_virtual_environment.md
similarity index 70%
rename from Spanish/23_virtual_environment_sp.md
rename to Spanish/23_Day_Virtual_environment/23_virtual_environment.md
index fd66a3f17..1771a1832 100644
--- a/Spanish/23_virtual_environment_sp.md
+++ b/Spanish/23_Day_Virtual_environment/23_virtual_environment.md
@@ -1,6 +1,23 @@
-# 30 Días de Python: Día 23 - Entornos virtuales
-
-- [Día 23](#-día-23)
+
+
30 días de Python: Día 23 - Entornos virtuales
+
+
+
+
Autor:
+Asabeneh Yetayeh
+ Segunda edición: julio de 2021
+
+
+
+[<< Día 22](../22_Day_Web_scraping/22_web_scraping.md) | [Día 24 >>](../24_Day_Statistics/24_statistics.md)
+
+
+
+- [📘 Día 23](#-día-23)
- [Configurar un entorno virtual](#configurar-un-entorno-virtual)
- [💻 Ejercicios: Día 23](#-ejercicios-día-23)
@@ -93,4 +110,4 @@ Los módulos necesarios para trabajar con Flask ya están instalados en el entor
🎉 ¡Felicidades! 🎉
-[<< Día 22](./22_web_scraping_sp.md) | [Día 24 >>](./24_statistics_sp.md)
\ No newline at end of file
+[<< Día 22](../22_Day_Web_scraping/22_web_scraping.md) | [Día 24 >>](../24_Day_Statistics/24_statistics.md)
\ No newline at end of file
diff --git a/Spanish/24_statistics_sp.md b/Spanish/24_Day_Statistics/24_statistics.md
similarity index 93%
rename from Spanish/24_statistics_sp.md
rename to Spanish/24_Day_Statistics/24_statistics.md
index 191c245e1..b433c4f03 100644
--- a/Spanish/24_statistics_sp.md
+++ b/Spanish/24_Day_Statistics/24_statistics.md
@@ -1,6 +1,23 @@
-# 30 Días de Python: Día 24 - Estadística
-
-- [Día 24](#-día-24)
+
+
30 días de Python: Día 24 - Estadística
+
+
+
+
Autor:
+Asabeneh Yetayeh
+Segunda edición: julio de 2021
+
+
+
+[<< Día 23](../23_Day_Virtual_environment/23_virtual_environment.md) | [Día 25 >>](../25_Day_Pandas/25_pandas.md)
+
+
+
+- [📘 Día 24](#-día-24)
- [Análisis estadístico con Python](#análisis-estadístico-con-python)
- [Estadística](#estadística)
- [Datos](#datos)
@@ -561,4 +578,4 @@ print('Media:', numpy_array_from_list.mean())
🎉 ¡Felicidades! 🎉
-[<< Día 23](./23_virtual_environment_sp.md) | [Día 25 >>](./25_pandas_sp.md)
\ No newline at end of file
+[<< Día 23](../23_Day_Virtual_environment/23_virtual_environment.md) | [Día 25 >>](../25_Day_Pandas/25_pandas.md)
\ No newline at end of file
diff --git a/Spanish/25_pandas_sp.md b/Spanish/25_Day_Pandas/25_pandas.md
similarity index 91%
rename from Spanish/25_pandas_sp.md
rename to Spanish/25_Day_Pandas/25_pandas.md
index b4940cce6..b848500ee 100644
--- a/Spanish/25_pandas_sp.md
+++ b/Spanish/25_Day_Pandas/25_pandas.md
@@ -1,6 +1,24 @@
-# 30 días de desafío de programación en Python: Día 25 - Pandas
+
+
30 días de Python: Día 25 - Pandas
+
+
-- [Día 25](#-día-25)
+
Autor:
+ Asabeneh Yetayeh
+ Segunda edición: julio de 2021
+
+
+
+
+[<< Día 24](../24_Day_Statistics/24_statistics.md) | [Día 26 >>](../26_Day_Python_web/26_python_web.md)
+
+
+
+- [📘 Día 25](#-día-25)
- [Pandas](#pandas)
- [InstalarPandas](#instalarpandas)
- [ImportarPandas](#importarpandas)
@@ -22,7 +40,7 @@
- [Formatear columnas del DataFrame](#formatear-columnas-del-dataframe)
- [Comprobar tipos de datos de columnas](#comprobar-tipos-de-datos-de-columnas)
- [Indexación booleana](#indexación-booleana)
- - [Ejercicios: Día 25](#ejercicios-día-25)
+ - [💻 Ejercicios: Día 25](#ejercicios-día-25)
# 📘 Día 25
@@ -62,25 +80,25 @@ Veamos un ejemplo de una serie:
Serie de Pandas de nombres
-
+
Serie de países
-
+
Serie de ciudades
-
+
Como puedes ver, una serie de Pandas es simplemente una columna de datos. Si queremos tener varias columnas, usamos un DataFrame. El siguiente ejemplo muestra un DataFrame de Pandas.
Veamos un ejemplo de un DataFrame de Pandas:
-
+
Un DataFrame es una colección de filas y columnas. Mira la tabla a continuación; tiene más columnas que el ejemplo anterior:
-
+
A continuación, veremos cómo importar Pandas y cómo crear Series y DataFrames con Pandas.
@@ -533,4 +551,4 @@ print(df[(df['age'] > 20) & (df['empleado'] == True)])
🎉 ¡Felicidades! 🎉
-[<< Día 24](./24_statistics_sp.md) | [Día 26 >>](./26_python_web_sp.md)
\ No newline at end of file
+[<< Día 24](../24_Day_Statistics/24_statistics.md) | [Día 26 >>](../26_Day_Python_web/26_python_web.md)
\ No newline at end of file
diff --git a/Spanish/26_python_web_sp.md b/Spanish/26_Day_Python_web/26_python_web.md
similarity index 95%
rename from Spanish/26_python_web_sp.md
rename to Spanish/26_Day_Python_web/26_python_web.md
index cf4fa826e..aac44c598 100644
--- a/Spanish/26_python_web_sp.md
+++ b/Spanish/26_Day_Python_web/26_python_web.md
@@ -1,6 +1,24 @@
-# 30 días de desafío de programación en Python: Día 26 - Programación web con Python
+
+
30 días de Python: Día 26 - Programación web con Python
+
+
+
+
Autor:
+ Asabeneh Yetayeh
+ Segunda edición: julio de 2021
+
+
+
+
+[<< Día 25 ](../25_Day_Pandas/25_pandas.md) | [Día 27 >>](../27_Day_Python_with_mongodb/27_python_with_mongodb.md)
+
+
-- [Día 26](#-día-26)
+- [📘 Día 26](#-día-26)
- [Programación web con Python](#programación-web-con-python)
- [Flask](#flask)
- [Estructura de carpetas](#estructura-de-carpetas)
@@ -16,7 +34,7 @@
- [Iniciar sesión en Heroku](#iniciar-sesión-en-heroku)
- [Crear requirements y Procfile](#crear-requirements-y-procfile)
- [Enviar el proyecto a Heroku](#enviar-el-proyecto-a-heroku)
- - [Ejercicios: Día 26](#ejercicios-día-26)
+ - [💻 Ejercicios: Día 26](#ejercicios-día-26)
# 📘 Día 26
@@ -813,4 +831,4 @@ Sin más preámbulos, realicemos algunos ejercicios para reforzar lo aprendido.
🎉 ¡Felicidades! 🎉
-[<< Día 25](./25_pandas_sp.md) | [>> Día 27](./27_python_with_mongodb_sp.md)
\ No newline at end of file
+[<< Día 25](../25_Day_Pandas/25_pandas.md) | [>> Día 27](../27_Day_Python_with_mongodb/27_python_with_mongodb.md)
\ No newline at end of file
diff --git a/Spanish/27_python_with_mongodb_sp.md b/Spanish/27_Day_Python_with_mongodb/27_python_with_mongodb.md
similarity index 93%
rename from Spanish/27_python_with_mongodb_sp.md
rename to Spanish/27_Day_Python_with_mongodb/27_python_with_mongodb.md
index 8bcd854c3..267a1fc0f 100644
--- a/Spanish/27_python_with_mongodb_sp.md
+++ b/Spanish/27_Day_Python_with_mongodb/27_python_with_mongodb.md
@@ -1,6 +1,24 @@
-# Reto de 30 días de Python: Día 27 - Python y MongoDB
+
+
30 días de Python: Día 27 - Python y MongoDB
+
+
-- [Día 27](#-día-27)
+
Autor:
+Asabeneh Yetayeh
+Segunda edición: julio de 2021
+
+
+
+
+[<< Día 26](../26_Day_Python_web/26_python_web.md) | [Día 28 >>](../28_Day_API/28_API.md)
+
+
+
+- [📘 Día 27](#-día-27)
- [Python y MongoDB](#python-y-mongodb)
- [MongoDB](#mongodb)
- [Comparación entre SQL y NoSQL](#comparación-entre-sql-y-nosql)
@@ -30,43 +48,43 @@ MongoDB es una base de datos NoSQL. MongoDB almacena datos en documentos tipo JS
### Comparación entre SQL y NoSQL
-
+
En esta sección nos centraremos en la base de datos NoSQL MongoDB. Regístrate en [MongoDB](https://www.mongodb.com/) haciendo clic en registrarse y luego en la página siguiente confirma el registro.
-
+
Rellena el formulario y haz clic en continuar..
-
+
Elige el plan gratuito
-
+
Elige la región gratuita más cercana y ponle un nombre a tu clúster.
-
+
Ahora se ha creado un sandbox gratuito
-
+
Permitir el acceso desde todos los hosts locales
-
+
Agregar usuario y contraseña
-
+
Crear enlace URI de MongoDB
-
+
Selecciona el driver para Python 3.6 o superior
-
+
### Obtener la cadena de conexión (URI de MongoDB)
@@ -160,7 +178,7 @@ Revisa tu clúster MongoDB y verás la base de datos y la colección, con un doc
Si ves lo anterior en tu clúster, significa que has creado con éxito una base de datos y una colección.
-
+
Si ves la imagen anterior, el documento fue creado con un ID largo como clave primaria. Cada vez que incrustamos un documento, MongoDB le asigna un ID único.
@@ -627,4 +645,4 @@ Ahora hemos eliminado la colección students de la base de datos.
🎉 ¡Felicidades! 🎉
-[<< Día 26](./26_python_web_sp.md) | [Día 28 >>](./28_API_sp.md)
\ No newline at end of file
+[<< Día 26](../26_Day_Python_web/26_python_web.md) | [Día 28 >>](../28_Day_API/28_API.md)
\ No newline at end of file
diff --git a/Spanish/28_API_sp.md b/Spanish/28_Day_API/28_API.md
similarity index 87%
rename from Spanish/28_API_sp.md
rename to Spanish/28_Day_API/28_API.md
index d3466971b..78ba77c72 100644
--- a/Spanish/28_API_sp.md
+++ b/Spanish/28_Day_API/28_API.md
@@ -1,6 +1,25 @@
-# Reto de 30 días de Python: Día 28 - API
+
+
30 días de Python: Día 28 - API
+
+
-- [Día 28](#-día-28)
+
Autor:
+Asabeneh Yetayeh
+Segunda edición: julio de 2021
+
+
+
+
+
+[<< Día 27](../27_Day_Python_with_mongodb/27_python_with_mongodb.md) | [Día 29 >>](../29_Day_Building_API/29_building_API.md)
+
+
+
+- [📘 Día 28](#-día-28)
- [Interfaz de Programación de Aplicaciones (API)](#interfaz-de-programación-de-aplicaciones-api)
- [API](#api)
- [Construir una API](#construir-una-api)
@@ -52,7 +71,7 @@ El navegador actúa como cliente HTTP porque envía solicitudes al servidor HTTP
HTTP utiliza un modelo cliente-servidor. El cliente HTTP abre una conexión y envía un mensaje de solicitud al servidor HTTP; el servidor HTTP devuelve un mensaje de respuesta, es decir, el recurso solicitado. Cuando el ciclo solicitud-respuesta termina, el servidor cierra la conexión.
-
+
Los formatos de los mensajes de solicitud y respuesta son similares. Ambos mensajes contienen:
@@ -63,7 +82,7 @@ Los formatos de los mensajes de solicitud y respuesta son similares. Ambos mensa
Navega por este sitio para ver un ejemplo de mensaje de solicitud y respuesta: https://thirtydaysofpython-v1-final.herokuapp.com/. Este sitio está desplegado en un dyno gratuito de Heroku y puede no estar disponible en algunos meses debido al alto tráfico. Apoyar este proyecto ayuda a mantener el servidor activo.
-
+
## Línea inicial de solicitud (línea de estado)
@@ -137,4 +156,4 @@ GET, POST, PUT y DELETE son los métodos HTTP que usaremos para implementar la A
🎉 ¡Felicidades! 🎉
-[<< Día 27](./27_python_with_mongodb_sp.md) | [Día 29 >>](./29_building_API_sp.md)
+[<< Día 27](../27_Day_Python_with_mongodb/27_python_with_mongodb.md) | [Día 29 >>](../29_Day_Building_API/29_building_API.md)
diff --git a/Spanish/29_building_API_sp.md b/Spanish/29_Day_Building_API/29_building_API.md
similarity index 92%
rename from Spanish/29_building_API_sp.md
rename to Spanish/29_Day_Building_API/29_building_API.md
index b5fd3df9c..6454e2153 100644
--- a/Spanish/29_building_API_sp.md
+++ b/Spanish/29_Day_Building_API/29_building_API.md
@@ -1,6 +1,24 @@
-# Reto de 30 días de Python: Día 29 - Construyendo una API
+
+
30 días de Python: Día 29 - Construyendo una API
+
+
-- [Día 29](#día-29)
+
Autor:
+Asabeneh Yetayeh
+Segunda edición: julio de 2021
+
+
+
+
+[<< Día 28](../28_Day_API/28_API.md) | [Día 29 >>](../30_Day_Conclusions/30_conclusions.md)
+
+
+
+- [📘 Día 29](#día-29)
- [Construyendo una API](#construyendo-una-api)
- [Estructura de la API](#estructura-de-la-api)
- [Obtener datos con GET](#obtener-datos-con-get)
@@ -27,7 +45,7 @@ Ejemplos de APIs:
[Postman](https://www.getpostman.com/) es una herramienta muy popular en el desarrollo de APIs. Si quieres seguir esta sección, descarga [Postman](https://www.getpostman.com/). Una alternativa a Postman es [Insomnia](https://insomnia.rest/download).
-
+
### Estructura de la API
@@ -103,11 +121,11 @@ if __name__ == '__main__':
Si solicitas http://localhost:5000/api/v1.0/students en el navegador obtendrás:
-
+
Si solicitas la misma URL en Postman obtendrás:
-
+
En lugar de datos ficticios, conectaremos la aplicación Flask a MongoDB y obtendremos datos desde la base.
@@ -465,4 +483,4 @@ if __name__ == '__main__':
🎉 ¡Felicidades! 🎉
-[<< Día 28](./28_API_sp.md) | [Día 30 >>](./30_conclusions_sp.md)
\ No newline at end of file
+[<< Día 28](../28_Day_API/28_API.md) | [Día 30 >>](../30_Day_Conclusions/30_conclusions.md)
\ No newline at end of file
diff --git a/Spanish/30_Day_Conclusions/30_conclusions.md b/Spanish/30_Day_Conclusions/30_conclusions.md
new file mode 100644
index 000000000..243585194
--- /dev/null
+++ b/Spanish/30_Day_Conclusions/30_conclusions.md
@@ -0,0 +1,41 @@
+
+
+
30 días de Python: Día 30- Conclusiones
+
+
+
+
+
Autor:
+Asabeneh Yetayeh
+Segunda edición: julio de 2021
+
+
+
+
+[<< Día 29](../29_Day_Building_API/29_building_API.md)
+
+
+- [📘 Día 30](#día-30)
+ - [Resumen](#resumen)
+ - [Testimonios](#testimonios)
+
+# Día 30
+
+## Resumen
+
+Al preparar este material aprendí mucho y ustedes me motivaron a hacer más. Felicidades por llegar hasta aquí. Si has completado todos los ejercicios y proyectos, ahora tienes la capacidad de avanzar en análisis de datos, ciencia de datos, aprendizaje automático o desarrollo web. [Apoya al autor para más material educativo](https://www.paypal.com/paypalme/asabeneh).
+
+## Testimonios
+
+Ahora es el momento de compartir tus pensamientos sobre el autor y el reto de 30 días de Python. Puedes dejar tu testimonio en este [enlace](https://www.asabeneh.com/testimonials).
+
+Enviar comentarios/retroalimentación:
+http://thirtydayofpython-api.herokuapp.com/feedback
+
+🎉 ¡Felicidades! 🎉
+
+[<< Día 29](../29_Day_Building_API/29_building_API.md)
\ No newline at end of file
diff --git a/Spanish/30_conclusions_sp.md b/Spanish/30_conclusions_sp.md
deleted file mode 100644
index 67bedf52a..000000000
--- a/Spanish/30_conclusions_sp.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# Reto de 30 días de Python: Día 30 - Conclusiones
-
-- [Día 30](#día-30)
- - [Resumen](#resumen)
- - [Testimonios](#testimonios)
-
-# Día 30
-
-## Resumen
-
-Al preparar este material aprendí mucho y ustedes me motivaron a hacer más. Felicidades por llegar hasta aquí. Si has completado todos los ejercicios y proyectos, ahora tienes la capacidad de avanzar en análisis de datos, ciencia de datos, aprendizaje automático o desarrollo web. [Apoya al autor para más material educativo](https://www.paypal.com/paypalme/asabeneh).
-
-## Testimonios
-
-Ahora es el momento de compartir tus pensamientos sobre el autor y el reto de 30 días de Python. Puedes dejar tu testimonio en este [enlace](https://www.asabeneh.com/testimonials).
-
-Enviar comentarios/retroalimentación:
-http://thirtydayofpython-api.herokuapp.com/feedback
-
-🎉 ¡Felicidades! 🎉
-
-[<< Día 29](./29_building_API_sp.md)
\ No newline at end of file
diff --git a/Spanish/README_sp.md b/Spanish/README_sp.md
deleted file mode 100644
index 510461b08..000000000
--- a/Spanish/README_sp.md
+++ /dev/null
@@ -1,454 +0,0 @@
-# 🐍 30 Días de Python
-
-| # Día | Tema |
-| ------ | :--------------------------------------------------------------------------------------: |
-| 01 | [Introducción](./readme_sp.md) |
-| 02 | [Variables y funciones integradas](./02_variables_builtin_functions_sp.md) |
-| 03 | [Operadores](./03_operators_sp.md) |
-| 04 | [Cadenas](./04_strings_sp.md) |
-| 05 | [Listas](./05_lists_sp.md) |
-| 06 | [Tuplas](./06_tuples_sp.md) |
-| 07 | [Conjuntos](./07_sets_sp.md) |
-| 08 | [Diccionarios](./08_dictionaries_sp.md) |
-| 09 | [Condicionales](./09_conditionals_sp.md) |
-| 10 | [Bucles](./10_loops_sp.md) |
-| 11 | [Funciones](./11_functions_sp.md) |
-| 12 | [Módulos](./12_modules_sp.md) |
-| 13 | [Comprensión de listas](./13_list_comprehension_sp.md) |
-| 14 | [Funciones de orden superior](./14_higher_order_functions_sp.md) |
-| 15 | [Errores de tipo](./15_python_type_errors_sp.md) |
-| 16 | [Fechas y horas en Python](./16_python_datetime_sp.md) |
-| 17 | [Manejo de excepciones](./17_exception_handling_sp.md) |
-| 18 | [Expresiones regulares](./18_regular_expressions_sp.md) |
-| 19 | [Manejo de archivos](./19_file_handling_sp.md) |
-| 20 | [Gestor de paquetes](./20_python_package_manager_sp.md) |
-| 21 | [Clases y objetos](./21_classes_and_objects_sp.md) |
-| 22 | [Web scraping](./22_web_scraping_sp.md) |
-| 23 | [Entornos virtuales](./23_virtual_environment_sp.md) |
-| 24 | [Estadística](./24_statistics_sp.md) |
-| 25 | [Pandas](./25_pandas_sp.md) |
-| 26 | [Python en la web](./26_python_web_sp.md) |
-| 27 | [Python y MongoDB](./27_python_with_mongodb_sp.md) |
-| 28 | [API](./28_API_sp.md) |
-| 29 | [Construir API](./29_building_API_sp.md) |
-| 30 | [Conclusiones](./30_conclusions_sp.md) |
-
-🧡🧡🧡 Feliz codificación 🧡🧡🧡
-
-
-
Ayuda al autor a crear más material educativo
-

-
-
-
-
30 Días de Python: Día 1 - Introducción
-
-
-
-
Autor:
-Asabeneh Yetayeh
- Segunda edición: julio de 2021
-
-
-
-
-[Ir al Día 2 >>](./02_variables_builtin_functions_sp.md)
-
-
-
-- [🐍 30 Días de Python](#-30-días-de-python)
-- [📘 Día 1](#-día-1)
- - [¡Bienvenido!](#¡bienvenido!)
- - [Introducción](#introducción)
- - [¿Por qué elegir Python?](#¿por-qué-elegir-python?)
- - [Configuración del entorno](#configuración-del-entorno)
- - [Instalar Python](#instalar-python)
- - [Python Shell](#python-shell)
- - [Instalar Visual Studio Code](#instalar-visual-studio-code)
- - [Cómo usar Visual Studio Code](#cómo-usar-visual-studio-code)
- - [Fundamentos de Python](#fundamentos-de-python)
- - [Sintaxis de Python](#sintaxis-de-python)
- - [Indentación en Python](#indentación-en-python)
- - [Comentarios](#comentarios)
-- [Ejemplo: comentario de una sola línea](#ejemplo-comentario-de-una-sola-línea)
-- [Ejemplo: comentario multilínea (docstring)](#ejemplo-comentario-multilínea-docstring)
- - [Tipos de datos](#tipos-de-datos)
- - [Números](#números)
- - [Cadenas](#cadenas)
- - [Booleanos](#booleanos)
- - [Listas](#listas)
- - [Diccionarios](#diccionarios)
- - [Tuplas](#tuplas)
- - [Conjuntos](#conjuntos)
- - [Comprobar tipos de datos](#comprobar-tipos-de-datos)
- - [Archivos Python](#archivos-python)
- - [💻 Ejercicios - Día 1](#-ejercicios---día-1)
- - [Ejercicios: Nivel 1](#ejercicios-nivel-1)
- - [Ejercicios: Nivel 2](#ejercicios-nivel-2)
- - [Ejercicios: Nivel 3](#ejercicios-nivel-3)
-
-# 📘 Día 1
-
-## ¡Bienvenido!
-
-**Felicidades** por decidir participar en el desafío de programación _30 Días de Python_. En este reto aprenderás todo lo necesario para convertirte en programador Python y la mayoría de los conceptos de programación. Al finalizar el reto recibirás un certificado del desafío _30DaysOfPython_.
-
-Si quieres participar activamente, únete al grupo de Telegram [30DaysOfPython challenge](https://t.me/ThirtyDaysOfPython).
-
-## Introducción
-
-Python es un lenguaje de programación de alto nivel, de propósito general. Es un lenguaje de código abierto, interpretado y orientado a objetos. Python fue creado por el programador holandés Guido van Rossum. El nombre del lenguaje proviene del show cómico británico _Monty Python's Flying Circus_. La primera versión se lanzó el 20 de febrero de 1991. Este desafío de 30 días te ayudará a aprender progresivamente la versión más reciente de Python, Python 3. Cada día cubre un tema diferente con explicaciones claras, ejemplos del mundo real, y muchos ejercicios y proyectos prácticos.
-
-El reto es adecuado para principiantes y profesionales que quieran aprender Python. Completar el reto puede tomar de 30 a 100 días; los miembros activos del grupo de Telegram tienen más probabilidades de terminarlo.
-
-Este reto fue escrito inicialmente en inglés sencillo, y luego traducido al chino. El reto es motivador, accesible y desafiante. Requiere dedicación para completarlo. Si aprendes mejor con vídeos, visita el canal Washera en YouTube:
-Washera YouTube channel. Puedes empezar por el video [Python for absolute beginners](https://youtu.be/OCCWZheOesI). Suscríbete, deja tus preguntas en los comentarios y sé proactivo; el autor te podrá notar.
-
-El autor aprecia tus comentarios, que compartas el contenido y la retroalimentación sobre el reto 30DaysOfPython. Puedes dejar feedback aquí: [link](https://www.asabeneh.com/testimonials)
-
-## ¿Por qué elegir Python?
-
-Python es un lenguaje con sintaxis cercana al lenguaje humano, sencillo y fácil de aprender y usar.
-Python es usado en muchas industrias y empresas (incluido Google). Se usa para desarrollar aplicaciones web, de escritorio, administración de sistemas y librerías de aprendizaje automático. Python está ampliamente adoptado en la comunidad de ciencia de datos y machine learning. Si esto no te convence, ¡es hora de empezar!
-
-## Configuración del entorno
-
-### Instalar Python
-
-Para ejecutar scripts escritos en Python necesitas instalar Python. Visita la página de descargas de Python: [https://www.python.org/](https://www.python.org/).
-
-Si usas Windows haz clic en el botón marcado en la imagen.
-
-[](https://www.python.org/)
-
-Si usas macOS haz clic en el botón marcado en la imagen.
-
-[](https://www.python.org/)
-
-Para comprobar si Python está instalado, abre la terminal y ejecuta:
-
-```shell
-python --version
-```
-
-
-
-En mi terminal aparece Python 3.7.5. Tu versión puede variar, pero debe ser 3.6 o superior. Si ves la versión, Python está instalado. Continúa al siguiente apartado.
-
-### Python Shell
-
-Python es un lenguaje interpretado, no necesita compilación. Se ejecuta línea por línea. Python incluye el Python Shell (intérprete interactivo), también llamado REPL (Read Eval Print Loop). Se usa para ejecutar comandos Python individuales y ver resultados al instante.
-
-El Python Shell espera código Python. Al escribir código lo interpreta y muestra el resultado.
-Abre la terminal o el símbolo del sistema (cmd) y escribe:
-
-```shell
-python
-```
-
-
-
-El intérprete interactivo de Python estará abierto y mostrará el prompt >>> para que escribas comandos Python. Escribe tu primer script y pulsa Enter.
-Veamos un ejemplo en el Shell interactivo.
-
-
-
-Genial: escribiste tu primer script en el Shell interactivo. ¿Cómo salir del Shell?
-Para salir escribe **exit()** y pulsa Enter.
-
-
-
-Ahora sabes cómo abrir y cerrar el intérprete interactivo.
-
-Si escribes código inválido, Python mostrará un error. Probemos un error intencional:
-
-
-
-El error indica Syntax Error: Invalid Syntax. Usar x para multiplicar no es válido en Python; el operador correcto es el asterisco (*). El error señala exactamente lo que hay que corregir.
-
-El proceso de encontrar y corregir errores se llama depuración (debugging). Reemplazamos x por * y volvemos a ejecutar:
-
-
-
-El error se corrige y el código produce el resultado esperado. Verás errores así a diario; aprender a depurar es esencial. Para depurar bien debes reconocer los tipos de errores: SyntaxError, IndexError, NameError, ModuleNotFoundError, KeyError, ImportError, AttributeError, TypeError, ValueError, ZeroDivisionError, etc. Los explicaremos más adelante.
-
-Practiquemos más en el Python Shell. Abre la terminal y escribe python.
-
-
-
-Con el Shell abierto hagamos operaciones matemáticas básicas: suma, resta, multiplicación, división, módulo y potencia.
-
-Antes de programar, hagamos algunos cálculos:
-
-- 2 + 3 = 5
-- 3 - 2 = 1
-- 3 * 2 = 6
-- 3 / 2 = 1.5
-- 3 ** 2 = 9
-
-En Python también tenemos:
-
-- 3 % 2 = 1 => resto de la división
-- 3 // 2 = 1 => división entera (sin resto)
-
-Conviértelo a código Python en el Shell. Primero escribe un comentario.
-
-Un comentario es texto ignorado por Python. Sirve para documentar y mejorar la legibilidad. En Python los comentarios empiezan con #.
-Así se escribe un comentario en Python:
-
-```python
-# Los comentarios comienzan con una almohadilla
-# Este es un comentario en Python porque empieza con (#)
-```
-
-
-
-Antes de continuar, practica más: cierra el Shell con _exit()_ y vuelve a abrirlo; escribe texto en el Shell:
-
-
-
-### Instalar Visual Studio Code
-
-El Python Shell está bien para probar fragmentos, pero para proyectos más grandes se usan editores de código. En este reto usaremos Visual Studio Code. VS Code es un editor de texto de código abierto muy popular. Recomiendo instalar Visual Studio Code, aunque puedes usar otro editor si lo prefieres.
-
-[](https://code.visualstudio.com/)
-
-Si ya tienes Visual Studio Code, veamos cómo usarlo.
-Si prefieres vídeos, mira el tutorial de instalación y configuración de VS Code para Python: https://www.youtube.com/watch?v=bn7Cx4z-vSo
-
-#### Cómo usar Visual Studio Code
-
-Abre Visual Studio Code haciendo doble clic en su icono. Aparecerá la interfaz. Interactúa con los iconos marcados en la imagen.
-
-
-
-Crea en el escritorio una carpeta llamada 30DaysOfPython. Ábrela con Visual Studio Code.
-
-
-
-
-
-Dentro del proyecto verás accesos para crear archivos y carpetas. Yo creé el primer archivo helloworld.py; tú puedes hacer lo mismo.
-
-
-
-Cuando termines de programar puedes cerrar el proyecto desde el editor:
-
-
-
-¡Enhorabuena! El entorno está listo. ¡Manos a la obra!
-
-## Fundamentos de Python
-
-### Sintaxis de Python
-
-Los scripts Python se pueden escribir en el Shell interactivo o en un editor. Los archivos Python usan la extensión .py.
-
-### Indentación en Python
-
-La indentación son espacios en blanco en el código. En muchos lenguajes se usa para mejorar legibilidad; en Python se usa para definir bloques de código. En otros lenguajes se usan llaves. Un error común en Python es el error de indentación.
-
-
-
-### Comentarios
-
-Los comentarios son importantes para la legibilidad. Python no ejecuta el texto dentro de comentarios.
-Cualquier texto que comience con # en Python es un comentario.
-
-# Ejemplo: comentario de una sola línea
-
-```shell
-# Este es el primer comentario
-# Este es el segundo comentario
-# Python se está apoderando del mundo
-```
-
-# Ejemplo: comentario multilínea (docstring)
-
-Se pueden usar comillas triples para comentarios multilínea si no se asignan a una variable.
-
-```shell
-"""Este es un comentario multilínea
-Los comentarios multilínea ocupan varias líneas.
-Python se está apoderando del mundo
-"""
-```
-
-### Tipos de datos
-
-Python tiene varios tipos de datos. Empecemos por los más comunes. Veremos otros tipos más en detalle en secciones posteriores. A continuación un resumen para familiarizarte.
-
-#### Números
-
-- Enteros: ... -3, -2, -1, 0, 1, 2, 3 ...
-- Flotantes: ... -3.5, -2.25, -1.0, 0.0, 1.1, 2.2, 3.5 ...
-- Complejos: 1 + j, 2 + 4j
-
-#### Cadenas
-
-Texto entre comillas simples o dobles; para multilínea se usan comillas triples.
-
-**Ejemplos:**
-
-```py
-'Asabeneh'
-'Finland'
-'Python'
-'I love teaching'
-'I hope you are enjoying the first day of 30DaysOfPython Challenge'
-```
-
-#### Booleanos
-
-True o False. Deben estar en mayúscula.
-
-**Ejemplo:**
-
-```python
-True # ¿La luz está encendida? Si sí, el valor es True
-False # ¿La luz está encendida? Si no, el valor es False
-```
-
-#### Listas
-
-Lista ordenada que puede contener distintos tipos, similar a un array en JavaScript.
-
-**Ejemplos:**
-
-```py
-[0, 1, 2, 3, 4, 5] # todos números
-['Banana', 'Orange', 'Mango', 'Avocado'] # todos cadenas
-['Finland','Estonia', 'Sweden','Norway'] # todos cadenas (países)
-['Banana', 10, False, 9.81] # mezcla de tipos
-```
-
-#### Diccionarios
-
-Colección no ordenada de pares clave:valor.
-
-**Ejemplo:**
-
-```py
-{
-'first_name':'Asabeneh',
-'last_name':'Yetayeh',
-'country':'Finland',
-'age':250,
-'is_married':True,
-'skills':['JS', 'React', 'Node', 'Python']
-}
-```
-
-#### Tuplas
-
-Colección ordenada e inmutable.
-
-**Ejemplo:**
-
-```py
-('Asabeneh', 'Pawel', 'Brook', 'Abraham', 'Lidiya') # nombres
-```
-
-```py
-('Earth', 'Jupiter', 'Neptune', 'Mars', 'Venus', 'Saturn', 'Uranus', 'Mercury') # planetas
-```
-
-#### Conjuntos
-
-Colección no ordenada que almacena elementos únicos (sin duplicados).
-
-**Ejemplos:**
-
-```py
-{2, 4, 3, 5}
-{3.14, 9.81, 2.7} # el orden en un set no importa
-```
-
-Detallaremos cada tipo de dato en secciones posteriores.
-
-### Comprobar tipos de datos
-
-Usa la función built-in **type** para comprobar el tipo de una variable. En la imagen puedes ver ejemplos:
-
-
-
-### Archivos Python
-
-Abre tu carpeta de proyecto 30DaysOfPython (créala si no existe). Dentro crea helloworld.py. Repite lo que hicimos en el Shell pero usando print() para ver resultados en consola desde un archivo.
-
-En el intérprete se imprime sin print, pero en VS Code debes usar la función _print()_. Ejemplo de uso: _print('argumento1', 'argumento2')_.
-
-**Ejemplo:** archivo helloworld.py
-
-```py
-# Día 1 - Desafío 30DaysOfPython
-
-print(2 + 3) # Suma (+)
-print(3 - 1) # Resta (-)
-print(2 * 3) # Multiplicación (*)
-print(3 / 2) # División (/)
-print(3 ** 2) # Potencia (**)
-print(3 % 2) # Módulo (%)
-print(3 // 2) # División entera (//)
-
-# Comprobar tipos de datos
-print(type(10)) # entero
-print(type(3.14)) # flotante
-print(type(1 + 3j)) # complejo
-print(type('Asabeneh')) # cadena
-print(type([1, 2, 3])) # lista
-print(type({'name':'Asabeneh'})) # diccionario
-print(type({9.8, 3.14, 2.7})) # conjunto
-print(type((9.8, 3.14, 2.7))) # tupla
-```
-
-Para ejecutar el archivo: en VS Code usa el botón verde o en la terminal escribe _python helloworld.py_.
-
-
-
-Genial. Completaste el Día 1. Practica con los ejercicios siguientes.
-
-## 💻 Ejercicios - Día 1
-
-### Ejercicios: Nivel 1
-
-1. Comprueba la versión de Python que usas.
-2. Abre el Python Shell e intenta con los operandos 3 y 4:
- - Suma (+)
- - Resta (-)
- - Multiplicación (*)
- - Módulo (%)
- - División (/)
- - Potencia (**)
- - División entera (//)
-3. En el Python Shell escribe las siguientes cadenas:
- - Tu nombre
- - Tu apellido
- - Tu país
- - Estoy disfrutando 30 días de Python
-4. Comprueba el tipo de los siguientes datos:
- - 10
- - 9.8
- - 3.14
- - 4 - 4j
- - ['Asabeneh', 'Python', 'Finland']
- - Tu nombre
- - Tu apellido
- - Tu país
-
-### Ejercicios: Nivel 2
-
-1. Crea en la carpeta 30DaysOfPython una carpeta llamada day_1. Dentro crea helloworld.py y repite las preguntas 1, 2, 3 y 4. Recuerda usar _print()_ en archivos. Navega a la carpeta donde guardaste el archivo y ejecútalo.
-
-### Ejercicios: Nivel 3
-
-1. Escribe ejemplos para distintos tipos de datos en Python: números (enteros, flotantes, complejos), cadenas, booleanos, listas, tuplas, conjuntos y diccionarios.
-2. Calcula la distancia euclídea entre (2, 3) y (10, 8): [Euclidean distance](https://en.wikipedia.org/wiki/Euclidean_distance#:~:text=In%20mathematics%2C%20the%20Euclidean%20distance,being%20called%20the%20Pythagorean%20distance).
-
-🎉 ¡Felicidades! 🎉
-
-[Ir al Día 2 >>](./02_variables_builtin_functions_sp.md)
diff --git a/Spanish/readme.md b/Spanish/readme.md
index bea18435f..9a7f6c397 100644
--- a/Spanish/readme.md
+++ b/Spanish/readme.md
@@ -1,43 +1,43 @@
-# 🐍 30 Days Of Python
-
-|# Day | Topics |
-|------|:---------------------------------------------------------:|
-| 01 | [Introducción](./readme.md)|
-| 02 | [Variables, funciones integradas](./02_Day_Variables_builtin_functions/02_variables_builtin_functions.md)|
-| 03 | [Operadores](./03_Day_Operators/03_operators.md)|
-| 04 | [Strings](./04_Day_Strings/04_strings.md)|
-| 05 | [Lists](./05_Day_Lists/05_lists.md)|
-| 06 | [Tuplas](./06_Day_Tuples/06_tuples.md)|
-| 07 | [Sets](./07_Day_Sets/07_sets.md)|
-| 08 | [Diccionarios](./08_Day_Dictionaries/08_dictionaries.md)|
-| 09 | [Condicionales](./09_Day_Conditionals/09_conditionals.md)|
-| 10 | [Bucles](./10_Day_Loops/10_loops.md)|
-| 11 | [Funciones](./11_Day_Functions/11_functions.md)|
-| 12 | [Módulos](./12_Day_Modules/12_modules.md)|
-| 13 | [Lista de comprensión](./13_Day_List_comprehension/13_list_comprehension.md)|
-| 14 | [Funciones de orden superior](./14_Day_Higher_order_functions/14_higher_order_functions.md)|
-| 15 | [Errores de tipo Python](./15_Day_Python_type_errors/15_python_type_errors.md)|
-| 16 | [Fecha y hora de Python](./16_Day_Python_date_time/16_python_datetime.md) |
-| 17 | [Manejo de excepciones](./17_Day_Exception_handling/17_exception_handling.md)|
-| 18 | [Expresiones regulares](./18_Day_Regular_expressions/18_regular_expressions.md)|
-| 19 | [Manejo de archivos](./19_Day_File_handling/19_file_handling.md)|
-| 20 | [Administrador de paquetes de Python](./20_Day_Python_package_manager/20_python_package_manager.md)|
-| 21 | [Clases y Objetos](./21_Day_Classes_and_objects/21_classes_and_objects.md)|
-| 22 | [Raspado web](./22_Day_Web_scraping/22_web_scraping.md)|
-| 23 | [Ambiente virtual](./23_Day_Virtual_environment/23_virtual_environment.md)|
-| 24 | [Estadísticas](./24_Day_Statistics/24_statistics.md)|
-| 25 | [Pandas](./25_Day_Pandas/25_pandas.md)|
-| 26 | [Python web](./26_Day_Python_web/26_python_web.md)|
-| 27 | [Python con MongoDB](./27_Day_Python_with_mongodb/27_python_with_mongodb.md)|
-| 28 | [API](./28_Day_API/28_API.md)|
-| 29 | [Building API](./29_Day_Building_API/29_building_API.md)|
-| 30 | [Conclusiones](./30_Day_Conclusions/30_conclusions.md)|
-
-🧡🧡🧡 FELIZ CODIGO 🧡🧡🧡
+# 🐍 30 Días de Python
+
+| # Día | Tema |
+| ------ | :--------------------------------------------------------------------------------------: |
+| 01 | [Introducción](./readme.md)|
+| 02 | [Variables y funciones integradas](./02_Day_Variables_builtin_functions/02_variables_builtin_functions.md)|
+| 03 | [Operadores](./03_Day_Operators/03_operators.md)|
+| 04 | [Cadenas](./04_Day_Strings/04_strings.md)|
+| 05 | [Listas](./05_Day_Lists/05_lists.md)|
+| 06 | [Tuplas](./06_Day_Tuples/06_tuples.md)|
+| 07 | [Conjuntos](./07_Day_Sets/07_sets.md)|
+| 08 | [Diccionarios](./08_Day_Dictionaries/08_dictionaries.md)|
+| 09 | [Condicionales](./09_Day_Conditionals/09_conditionals.md)|
+| 10 | [Bucles](./10_Day_Loops/10_loops.md)|
+| 11 | [Funciones](./11_Day_Functions/11_functions.md)|
+| 12 | [Módulos](./12_Day_Modules/12_modules.md)|
+| 13 | [Comprensión de listas](./13_Day_List_comprehension/13_list_comprehension.md)|
+| 14 | [Funciones de orden superior](./14_Day_Higher_order_functions/14_higher_order_functions.md)|
+| 15 | [Errores de tipo](./15_Day_Python_type_errors/15_python_type_errors.md) |
+| 16 | [Fechas y horas en Python](./16_Day_Python_date_time/16_python_datetime.md) |
+| 17 | [Manejo de excepciones](./17_Day_Exception_handling/17_exception_handling.md) |
+| 18 | [Expresiones regulares](./18_Day_Regular_expressions/18_regular_expressions.md) |
+| 19 | [Manejo de archivos](./19_Day_File_handling/19_file_handling.md) |
+| 20 | [Gestor de paquetes](./20_Day_Python_package_manager/20_python_package_manager.md) |
+| 21 | [Clases y objetos](./21_Day_Classes_and_objects/21_classes_and_objects.md) |
+| 22 | [Web scraping](./22_Day_Web_scraping/22_web_scraping.md) |
+| 23 | [Entornos virtuales](./23_Day_Virtual_environment/23_virtual_environment.md) |
+| 24 | [Estadística](./24_Day_Statistics/24_statistics.md) |
+| 25 | [Pandas](./25_Day_Pandas/25_pandas.md) |
+| 26 | [Python en la web](./26_Day_Python_web/26_python_web.md) |
+| 27 | [Python y MongoDB](./27_Day_Python_with_mongodb/27_python_with_mongodb.md) |
+| 28 | [API](./28_Day_API/28_API.md) |
+| 29 | [Construir API](./29_Day_Building_API/29_building_API.md) |
+| 30 | [Conclusiones](./30_Day_Conclusions/30_conclusions.md) |
+
+🧡🧡🧡 Feliz codificación 🧡🧡🧡
-
Support the author to create more educational materials
-

+
Ayuda al autor a crear más material educativo
+
-[Dia 2 >>](./02_Day_Variables_builtin_functions/02_variables_builtin_functions.md)
+[Ir al Día 2 >>](./02_Day_Variables_builtin_functions/02_variables_builtin_functions.md)
-
+
-- [🐍 30 Days Of Python](#-30-days-of-python)
-- [📘 Day 1](#-day-1)
- - [Welcome](#welcome)
- - [Introduction](#introduction)
- - [Why Python ?](#why-python-)
- - [Environment Setup](#environment-setup)
- - [Installing Python](#installing-python)
+- [🐍 30 Días de Python](#-30-días-de-python)
+- [📘 Día 1](#-día-1)
+ - [¡Bienvenido!](#¡bienvenido!)
+ - [Introducción](#introducción)
+ - [¿Por qué elegir Python?](#¿por-qué-elegir-python?)
+ - [Configuración del entorno](#configuración-del-entorno)
+ - [Instalar Python](#instalar-python)
- [Python Shell](#python-shell)
- - [Installing Visual Studio Code](#installing-visual-studio-code)
- - [How to use visual studio code](#how-to-use-visual-studio-code)
- - [Basic Python](#basic-python)
- - [Python Syntax](#python-syntax)
- - [Python Indentation](#python-indentation)
- - [Comments](#comments)
- - [Data types](#data-types)
- - [Number](#number)
- - [String](#string)
- - [Booleans](#booleans)
- - [List](#list)
- - [Dictionary](#dictionary)
- - [Tuple](#tuple)
- - [Set](#set)
- - [Checking Data types](#checking-data-types)
- - [Python File](#python-file)
- - [💻 Exercises - Day 1](#-exercises---day-1)
- - [Exercise: Level 1](#exercise-level-1)
- - [Exercise: Level 2](#exercise-level-2)
- - [Exercise: Level 3](#exercise-level-3)
+ - [Instalar Visual Studio Code](#instalar-visual-studio-code)
+ - [Cómo usar Visual Studio Code](#cómo-usar-visual-studio-code)
+ - [Fundamentos de Python](#fundamentos-de-python)
+ - [Sintaxis de Python](#sintaxis-de-python)
+ - [Indentación en Python](#indentación-en-python)
+ - [Comentarios](#comentarios)
+- [Ejemplo: comentario de una sola línea](#ejemplo-comentario-de-una-sola-línea)
+- [Ejemplo: comentario multilínea (docstring)](#ejemplo-comentario-multilínea-docstring)
+ - [Tipos de datos](#tipos-de-datos)
+ - [Números](#números)
+ - [Cadenas](#cadenas)
+ - [Booleanos](#booleanos)
+ - [Listas](#listas)
+ - [Diccionarios](#diccionarios)
+ - [Tuplas](#tuplas)
+ - [Conjuntos](#conjuntos)
+ - [Comprobar tipos de datos](#comprobar-tipos-de-datos)
+ - [Archivos Python](#archivos-python)
+ - [💻 Ejercicios - Día 1](#-ejercicios---día-1)
+ - [Ejercicios: Nivel 1](#ejercicios-nivel-1)
+ - [Ejercicios: Nivel 2](#ejercicios-nivel-2)
+ - [Ejercicios: Nivel 3](#ejercicios-nivel-3)
+
+# 📘 Día 1
-# 📘 Day 1
+## ¡Bienvenido!
-## Welcome
+**Felicidades** por decidir participar en el desafío de programación _30 Días de Python_. En este reto aprenderás todo lo necesario para convertirte en programador Python y la mayoría de los conceptos de programación. Al finalizar el reto recibirás un certificado del desafío _30DaysOfPython_.
-**Congratulations** for deciding to participate in a _30 days of Python_ programming challenge . In this challenge you will learn everything you need to be a python programmer and the whole concept of programming. In the end of the challenge you will get a _30DaysOfPython_ programming challenge certificate.
+Si quieres participar activamente, únete al grupo de Telegram [30DaysOfPython challenge](https://t.me/ThirtyDaysOfPython).
-If you would like to actively engage in the challenge, you may join the [30DaysOfPython challenge](https://t.me/ThirtyDaysOfPython) telegram group.
+## Introducción
-## Introduction
+Python es un lenguaje de programación de alto nivel, de propósito general. Es un lenguaje de código abierto, interpretado y orientado a objetos. Python fue creado por el programador holandés Guido van Rossum. El nombre del lenguaje proviene del show cómico británico _Monty Python's Flying Circus_. La primera versión se lanzó el 20 de febrero de 1991. Este desafío de 30 días te ayudará a aprender progresivamente la versión más reciente de Python, Python 3. Cada día cubre un tema diferente con explicaciones claras, ejemplos del mundo real, y muchos ejercicios y proyectos prácticos.
-Python is a high-level programming language for general-purpose programming. It is an open source, interpreted, objected-oriented programming language. Python was created by a Dutch programmer, Guido van Rossum. The name of Python programming language was derived from a British sketch comedy series, _Monty Python's Flying Circus_. The first version was released on February 20, 1991. This 30 days of Python challenge will help you learn the latest version of Python, Python 3 step by step. The topics are broken down into 30 days, where each day contains several topics with easy-to-understand explanations, real-world examples, many hands on exercises and projects.
+El reto es adecuado para principiantes y profesionales que quieran aprender Python. Completar el reto puede tomar de 30 a 100 días; los miembros activos del grupo de Telegram tienen más probabilidades de terminarlo.
-This challenge is designed for beginners and professionals who want to learn python programming language. It may take 30 to 100 days to complete the challenge, people who actively participate on the telegram group have a high probability of completing the challenge.
+Este reto fue escrito inicialmente en inglés sencillo, y luego traducido al chino. El reto es motivador, accesible y desafiante. Requiere dedicación para completarlo. Si aprendes mejor con vídeos, visita el canal Washera en YouTube:
+Washera YouTube channel. Puedes empezar por el video [Python for absolute beginners](https://youtu.be/OCCWZheOesI). Suscríbete, deja tus preguntas en los comentarios y sé proactivo; el autor te podrá notar.
-This challenge is easy to read, written in conversational English, engaging, motivating and at the same time, it is very demanding. You need to allocate much time to finish this challenge. If you are a visual learner, you may get the video lesson on Washera YouTube channel. You may start from [Python for Absolute Beginners video](https://youtu.be/OCCWZheOesI). Subscribe the channel, comment and ask questions on YouTube vidoes and be proactive, the author will eventually notice you.
+El autor aprecia tus comentarios, que compartas el contenido y la retroalimentación sobre el reto 30DaysOfPython. Puedes dejar feedback aquí: [link](https://www.asabeneh.com/testimonials)
-The author likes to hear your opinion about the challenge, share the author by expressing your thoughts about the 30DaysOfPython challenge. You can leave your testimonial on this [link](https://testimonial-vdzd.onrender.com/)
+## ¿Por qué elegir Python?
-## Why Python ?
+Python es un lenguaje con sintaxis cercana al lenguaje humano, sencillo y fácil de aprender y usar.
+Python es usado en muchas industrias y empresas (incluido Google). Se usa para desarrollar aplicaciones web, de escritorio, administración de sistemas y librerías de aprendizaje automático. Python está ampliamente adoptado en la comunidad de ciencia de datos y machine learning. Si esto no te convence, ¡es hora de empezar!
-It is a programming language which is very close to human language and because of that it is easy to learn and use.
-Python is used by various industries and companies (including Google). It has been used to develop web applications, desktop applications, system adminstration, and machine learning libraries. Python is highly embraced language in the data science and machine learning community. I hope this is enough to convince you to start learning Python. Python is eating the world and you are killing it before it eats you.
+## Configuración del entorno
-## Environment Setup
+### Instalar Python
-### Installing Python
+Para ejecutar scripts escritos en Python necesitas instalar Python. Visita la página de descargas de Python: [https://www.python.org/](https://www.python.org/).
-To run a python script you need to install python. Let's [download](https://www.python.org/) python.
-If your are a windows user. Click the button encircled in red.
+Si usas Windows haz clic en el botón marcado en la imagen.
-[](https://www.python.org/)
+[](https://www.python.org/)
-If you are a macOS user. Click the button encircled in red.
+Si usas macOS haz clic en el botón marcado en la imagen.
-[](https://www.python.org/)
+[](https://www.python.org/)
-To check if python is installed write the following command on your device terminal.
+Para comprobar si Python está instalado, abre la terminal y ejecuta:
```shell
python --version
```
-
+
-As you can see from the terminal, I am using _Python 3.7.5_ version at the moment. Your version of Python might be different from mine by but it should be 3.6 or above. If you mange to see the python version, well done. Python has been installed on your machine. Continue to the next section.
+En mi terminal aparece Python 3.7.5. Tu versión puede variar, pero debe ser 3.6 o superior. Si ves la versión, Python está instalado. Continúa al siguiente apartado.
### Python Shell
-Python is an interpreted scripting language, so it does not need to be compiled. It means it executes the code line by line. Python comes with a _Python Shell (Python Interactive Shell)_. It is used to execute a single python command and get the result.
+Python es un lenguaje interpretado, no necesita compilación. Se ejecuta línea por línea. Python incluye el Python Shell (intérprete interactivo), también llamado REPL (Read Eval Print Loop). Se usa para ejecutar comandos Python individuales y ver resultados al instante.
-Python Shell waits for the Python code from the user. When you enter the code, it interprets the code and shows the result in the next line.
-Open your terminal or command prompt(cmd) and write:
+El Python Shell espera código Python. Al escribir código lo interpreta y muestra el resultado.
+Abre la terminal o el símbolo del sistema (cmd) y escribe:
```shell
python
```
-
+
-The Python interactive shell is opened and it is waiting for you to write Python code(Python script). You will write your Python script next to this symbol >>> and then click Enter.
-Let us write our very first script on the Python scripting shell.
+El intérprete interactivo de Python estará abierto y mostrará el prompt >>> para que escribas comandos Python. Escribe tu primer script y pulsa Enter.
+Veamos un ejemplo en el Shell interactivo.
-
+
-Well done, you wrote your first Python script on Python interactive shell. How do we close the Python interactive shell ?
-To close the shell, next to this symbol >> write **exit()** command and press Enter.
+Genial: escribiste tu primer script en el Shell interactivo. ¿Cómo salir del Shell?
+Para salir escribe **exit()** y pulsa Enter.
-
+
-Now, you know how to open the Python interactive shell and how to exit from it.
+Ahora sabes cómo abrir y cerrar el intérprete interactivo.
-Python will give you results if you write scripts that Python understands, if not it returns errors. Let's make a deliberate mistake and see what Python will return.
+Si escribes código inválido, Python mostrará un error. Probemos un error intencional:
-
+
-As you can see from the returned error, Python is so clever that it knows the mistake we made and which was _Syntax Error: invalid syntax_. Using x as multiplication in Python is a syntax error because (x) is not a valid syntax in Python. Instead of (**x**) we use asterisk (*) for multiplication. The returned error clearly shows what to fix.
+El error indica Syntax Error: Invalid Syntax. Usar x para multiplicar no es válido en Python; el operador correcto es el asterisco (*). El error señala exactamente lo que hay que corregir.
-The process of identifying and removing errors from a program is called _debugging_. Let us debug it by putting * in place of **x**.
+El proceso de encontrar y corregir errores se llama depuración (debugging). Reemplazamos x por * y volvemos a ejecutar:
-
+
-Our bug was fixed, the code ran and we got a result we were expecting. As a programmer you will see such kind of errors on daily basis. It is good to know how to debug. To be good at debugging you should understand what kind of errors you are facing. Some of the Python errors you may encounter are _SyntaxError_, _IndexError_, _NameError_, _ModuleNotFoundError_, _KeyError_, _ImportError_, _AttributeError_, _TypeError_, _ValueError_, _ZeroDivisionError_ etc. We will see more about different Python **_error types_** in later sections.
+El error se corrige y el código produce el resultado esperado. Verás errores así a diario; aprender a depurar es esencial. Para depurar bien debes reconocer los tipos de errores: SyntaxError, IndexError, NameError, ModuleNotFoundError, KeyError, ImportError, AttributeError, TypeError, ValueError, ZeroDivisionError, etc. Los explicaremos más adelante.
-Let us practice more how to use Python interactive shell. Go to your terminal or command prompt and write the word **python**.
+Practiquemos más en el Python Shell. Abre la terminal y escribe python.
-
+
-The Python interactive shell is opened. Let us do some basic mathematical operations (addition, subtraction, multiplication, division, modulus, exponential).
+Con el Shell abierto hagamos operaciones matemáticas básicas: suma, resta, multiplicación, división, módulo y potencia.
-Let us do some maths first before we write any Python code:
+Antes de programar, hagamos algunos cálculos:
-- 2 + 3 is 5
-- 3 - 2 is 1
-- 3 \* 2 is 6
-- 3 / 2 is 1.5
-- 3 ** 2 is the same as 3 * 3
+- 2 + 3 = 5
+- 3 - 2 = 1
+- 3 * 2 = 6
+- 3 / 2 = 1.5
+- 3 ** 2 = 9
-In python we have the following additional operations:
+En Python también tenemos:
-- 3 % 2 = 1 => which means finding the remainder
-- 3 // 2 = 1 => which means removing the remainder
+- 3 % 2 = 1 => resto de la división
+- 3 // 2 = 1 => división entera (sin resto)
-Let us change the above mathematical expressions to Python code. The Python shell has been opened and let us write a comment at the very beginning of the shell.
+Conviértelo a código Python en el Shell. Primero escribe un comentario.
-A _comment_ is a part of the code which is not executed by python. So we can leave some text in our code to make our code more readable. Python does not run the comment part. A comment in python starts with hash(#) symbol.
-This is how you write a comment in python
+Un comentario es texto ignorado por Python. Sirve para documentar y mejorar la legibilidad. En Python los comentarios empiezan con #.
+Así se escribe un comentario en Python:
-```shell
- # comment starts with hash
- # this is a python comment, because it starts with a (#) symbol
+```python
+# Los comentarios comienzan con una almohadilla
+# Este es un comentario en Python porque empieza con (#)
```
-
+
-Before we move on to the next section, let us practice more on the Python interactive shell. Close the opened shell by writing _exit()_ on the shell and open it again and let us practice how to write text on the Python shell.
+Antes de continuar, practica más: cierra el Shell con _exit()_ y vuelve a abrirlo; escribe texto en el Shell:
-
+
-### Installing Visual Studio Code
+### Instalar Visual Studio Code
-The Python interactive shell is good to try and test small script codes but it will not be for a big project. In real work environment, developers use different code editors to write codes. In this 30 days of Python programming challenge we will use visual studio code. Visual studio code is a very popular open source text editor. I am a fan of vscode and I would recommend to [download](https://code.visualstudio.com/) visual studio code, but if you are in favor of other editors, feel free to follow with what you have.
+El Python Shell está bien para probar fragmentos, pero para proyectos más grandes se usan editores de código. En este reto usaremos Visual Studio Code. VS Code es un editor de texto de código abierto muy popular. Recomiendo instalar Visual Studio Code, aunque puedes usar otro editor si lo prefieres.
-[](https://code.visualstudio.com/)
+[](https://code.visualstudio.com/)
-If you installed visual studio code, let us see how to use it.
-If you prefer a video, you can follow this Visual Studio Code for Python [Video tutorial](https://www.youtube.com/watch?v=bn7Cx4z-vSo)
+Si ya tienes Visual Studio Code, veamos cómo usarlo.
+Si prefieres vídeos, mira el tutorial de instalación y configuración de VS Code para Python: https://www.youtube.com/watch?v=bn7Cx4z-vSo
-#### How to use visual studio code
+#### Cómo usar Visual Studio Code
-Open the visual studio code by double clicking the visual studio icon. When you open it you will get this kind of interface. Try to interact with the labeled icons.
+Abre Visual Studio Code haciendo doble clic en su icono. Aparecerá la interfaz. Interactúa con los iconos marcados en la imagen.
-
+
-Create a folder named 30DaysOfPython on your desktop. Then open it using visual studio code.
+Crea en el escritorio una carpeta llamada 30DaysOfPython. Ábrela con Visual Studio Code.
-
+
-
+
-After opening it you will see shortcuts for creating files and folders inside of 30DaysOfPython project's directory. As you can see below, I have created the very first file, helloworld.py. You can do the same.
+Dentro del proyecto verás accesos para crear archivos y carpetas. Yo creé el primer archivo helloworld.py; tú puedes hacer lo mismo.
-
+
-After a long day of coding, you want to close your code editor, right? This is how you will close the opened project.
+Cuando termines de programar puedes cerrar el proyecto desde el editor:
-
+
-Congratulations, you have finished setting up the development environment. Let us start coding.
+¡Enhorabuena! El entorno está listo. ¡Manos a la obra!
-## Basic Python
+## Fundamentos de Python
-### Python Syntax
+### Sintaxis de Python
-A Python script can be written in Python interactive shell or in the code editor. A Python file has an extension .py.
+Los scripts Python se pueden escribir en el Shell interactivo o en un editor. Los archivos Python usan la extensión .py.
-### Python Indentation
+### Indentación en Python
-An indentation is a white space in a text. Indentation in many languages is used to increase code readability, however Python uses indentation to create block of codes. In other programming languages curly brackets are used to create blocks of codes instead of indentation. One of the common bugs when writing python code is wrong indentation.
+La indentación son espacios en blanco en el código. En muchos lenguajes se usa para mejorar legibilidad; en Python se usa para definir bloques de código. En otros lenguajes se usan llaves. Un error común en Python es el error de indentación.
-
+
-### Comments
+### Comentarios
-Comments are very important to make the code more readable and to leave remarks in our code. Python does not run comment parts of our code.
-Any text starting with hash(#) in Python is a comment.
+Los comentarios son importantes para la legibilidad. Python no ejecuta el texto dentro de comentarios.
+Cualquier texto que comience con # en Python es un comentario.
-**Example: Single Line Comment**
+# Ejemplo: comentario de una sola línea
```shell
- # This is the first comment
- # This is the second comment
- # Python is eating the world
+# Este es el primer comentario
+# Este es el segundo comentario
+# Python se está apoderando del mundo
```
-**Example: Multiline Comment**
+# Ejemplo: comentario multilínea (docstring)
-Triple quote can be used for multiline comment if it is not assigned to a variable
+Se pueden usar comillas triples para comentarios multilínea si no se asignan a una variable.
```shell
-"""This is multiline comment
-multiline comment takes multiple lines.
-python is eating the world
+"""Este es un comentario multilínea
+Los comentarios multilínea ocupan varias líneas.
+Python se está apoderando del mundo
"""
```
-### Data types
+### Tipos de datos
-In Python there are several types of data types. Let us get started with the most common ones. Different data types will be covered in detail in other sections. For the time being, let us just go through the different data types and get familiar with them. You do not have to have a clear understanding now.
+Python tiene varios tipos de datos. Empecemos por los más comunes. Veremos otros tipos más en detalle en secciones posteriores. A continuación un resumen para familiarizarte.
-#### Number
+#### Números
-- Integer: Integer(negative, zero and positive) numbers
- Example:
- ... -3, -2, -1, 0, 1, 2, 3 ...
-- Float: Decimal number
- Example
- ... -3.5, -2.25, -1.0, 0.0, 1.1, 2.2, 3.5 ...
-- Complex
- Example
- 1 + j, 2 + 4j
+- Enteros: ... -3, -2, -1, 0, 1, 2, 3 ...
+- Flotantes: ... -3.5, -2.25, -1.0, 0.0, 1.1, 2.2, 3.5 ...
+- Complejos: 1 + j, 2 + 4j
-#### String
+#### Cadenas
-A collection of one or more characters under a single or double quote. If a string is more than one sentence then we use a triple quote.
+Texto entre comillas simples o dobles; para multilínea se usan comillas triples.
-**Example:**
+**Ejemplos:**
```py
'Asabeneh'
@@ -303,155 +302,153 @@ A collection of one or more characters under a single or double quote. If a stri
'I hope you are enjoying the first day of 30DaysOfPython Challenge'
```
-#### Booleans
+#### Booleanos
-A boolean data type is either a True or False value. T and F should be always uppercase.
+True o False. Deben estar en mayúscula.
-**Example:**
+**Ejemplo:**
```python
- True # Is the light on? If it is on, then the value is True
- False # Is the light on? If it is off, then the value is False
+True # ¿La luz está encendida? Si sí, el valor es True
+False # ¿La luz está encendida? Si no, el valor es False
```
-#### List
+#### Listas
-Python list is an ordered collection which allows to store different data type items. A list is similar to an array in JavaScript.
+Lista ordenada que puede contener distintos tipos, similar a un array en JavaScript.
-**Example:**
+**Ejemplos:**
```py
-[0, 1, 2, 3, 4, 5] # all are the same data types - a list of numbers
-['Banana', 'Orange', 'Mango', 'Avocado'] # all the same data types - a list of strings (fruits)
-['Finland','Estonia', 'Sweden','Norway'] # all the same data types - a list of strings (countries)
-['Banana', 10, False, 9.81] # different data types in the list - string, integer, boolean and float
+[0, 1, 2, 3, 4, 5] # todos números
+['Banana', 'Orange', 'Mango', 'Avocado'] # todos cadenas
+['Finland','Estonia', 'Sweden','Norway'] # todos cadenas (países)
+['Banana', 10, False, 9.81] # mezcla de tipos
```
-#### Dictionary
+#### Diccionarios
-A Python dictionary object is an unordered collection of data in a key value pair format.
+Colección no ordenada de pares clave:valor.
-**Example:**
+**Ejemplo:**
```py
{
'first_name':'Asabeneh',
'last_name':'Yetayeh',
-'country':'Finland',
-'age':250,
+'country':'Finland',
+'age':250,
'is_married':True,
'skills':['JS', 'React', 'Node', 'Python']
}
```
-#### Tuple
+#### Tuplas
-A tuple is an ordered collection of different data types like list but tuples can not be modified once they are created. They are immutable.
+Colección ordenada e inmutable.
-**Example:**
+**Ejemplo:**
```py
-('Asabeneh', 'Pawel', 'Brook', 'Abraham', 'Lidiya') # Names
+('Asabeneh', 'Pawel', 'Brook', 'Abraham', 'Lidiya') # nombres
```
```py
-('Earth', 'Jupiter', 'Neptune', 'Mars', 'Venus', 'Saturn', 'Uranus', 'Mercury') # planets
+('Earth', 'Jupiter', 'Neptune', 'Mars', 'Venus', 'Saturn', 'Uranus', 'Mercury') # planetas
```
-#### Set
-
-A set is a collection of data types similar to list and tuple. Unlike list and tuple, set is not an ordered collection of items. Like in Mathematics, set in Python stores only unique items.
+#### Conjuntos
-In later sections, we will go in detail about each and every Python data type.
+Colección no ordenada que almacena elementos únicos (sin duplicados).
-**Example:**
+**Ejemplos:**
```py
{2, 4, 3, 5}
-{3.14, 9.81, 2.7} # order is not important in set
+{3.14, 9.81, 2.7} # el orden en un set no importa
```
-### Checking Data types
+Detallaremos cada tipo de dato en secciones posteriores.
-To check the data type of certain data/variable we use the **type** function. In the following terminal you will see different python data types:
+### Comprobar tipos de datos
-
+Usa la función built-in **type** para comprobar el tipo de una variable. En la imagen puedes ver ejemplos:
-### Python File
+
-First open your project folder, 30DaysOfPython. If you don't have this folder, create a folder name called 30DaysOfPython. Inside this folder, create a file called helloworld.py. Now, let's do what we did on python interactive shell using visual studio code.
+### Archivos Python
-The Python interactive shell was printing without using **print** but on visual studio code to see our result we should use a built in function _print(). The _print()_ built-in function takes one or more arguments as follows _print('arument1', 'argument2', 'argument3')_. See the examples below.
+Abre tu carpeta de proyecto 30DaysOfPython (créala si no existe). Dentro crea helloworld.py. Repite lo que hicimos en el Shell pero usando print() para ver resultados en consola desde un archivo.
-**Example:**
+En el intérprete se imprime sin print, pero en VS Code debes usar la función _print()_. Ejemplo de uso: _print('argumento1', 'argumento2')_.
-The file name is helloworld.py
+**Ejemplo:** archivo helloworld.py
```py
-# Day 1 - 30DaysOfPython Challenge
-
-print(2 + 3) # addition(+)
-print(3 - 1) # subtraction(-)
-print(2 * 3) # multiplication(*)
-print(3 / 2) # division(/)
-print(3 ** 2) # exponential(**)
-print(3 % 2) # modulus(%)
-print(3 // 2) # Floor division operator(//)
-
-# Checking data types
-print(type(10)) # Int
-print(type(3.14)) # Float
-print(type(1 + 3j)) # Complex number
-print(type('Asabeneh')) # String
-print(type([1, 2, 3])) # List
-print(type({'name':'Asabeneh'})) # Dictionary
-print(type({9.8, 3.14, 2.7})) # Set
-print(type((9.8, 3.14, 2.7))) # Tuple
+# Día 1 - Desafío 30DaysOfPython
+
+print(2 + 3) # Suma (+)
+print(3 - 1) # Resta (-)
+print(2 * 3) # Multiplicación (*)
+print(3 / 2) # División (/)
+print(3 ** 2) # Potencia (**)
+print(3 % 2) # Módulo (%)
+print(3 // 2) # División entera (//)
+
+# Comprobar tipos de datos
+print(type(10)) # entero
+print(type(3.14)) # flotante
+print(type(1 + 3j)) # complejo
+print(type('Asabeneh')) # cadena
+print(type([1, 2, 3])) # lista
+print(type({'name':'Asabeneh'})) # diccionario
+print(type({9.8, 3.14, 2.7})) # conjunto
+print(type((9.8, 3.14, 2.7))) # tupla
```
-To run the python file check the image below. You can run the python file either by running the green button on Visual Studio Code or by typing _python helloworld.py_ in the terminal .
+Para ejecutar el archivo: en VS Code usa el botón verde o en la terminal escribe _python helloworld.py_.
-
+
-🌕 You are amazing. You have just completed day 1 challenge and you are on your way to greatness. Now do some exercises for your brain and muscles.
+Genial. Completaste el Día 1. Practica con los ejercicios siguientes.
-## 💻 Exercises - Day 1
+## 💻 Ejercicios - Día 1
-### Exercise: Level 1
+### Ejercicios: Nivel 1
-1. Check the python version you are using
-2. Open the python interactive shell and do the following operations. The operands are 3 and 4.
- - addition(+)
- - subtraction(-)
- - multiplication(\*)
- - modulus(%)
- - division(/)
- - exponential(\*\*)
- - floor division operator(//)
-3. Write strings on the python interactive shell. The strings are the following:
- - Your name
- - Your family name
- - Your country
- - I am enjoying 30 days of python
-4. Check the data types of the following data:
+1. Comprueba la versión de Python que usas.
+2. Abre el Python Shell e intenta con los operandos 3 y 4:
+ - Suma (+)
+ - Resta (-)
+ - Multiplicación (*)
+ - Módulo (%)
+ - División (/)
+ - Potencia (**)
+ - División entera (//)
+3. En el Python Shell escribe las siguientes cadenas:
+ - Tu nombre
+ - Tu apellido
+ - Tu país
+ - Estoy disfrutando 30 días de Python
+4. Comprueba el tipo de los siguientes datos:
- 10
- 9.8
- 3.14
- 4 - 4j
- ['Asabeneh', 'Python', 'Finland']
- - Your name
- - Your family name
- - Your country
+ - Tu nombre
+ - Tu apellido
+ - Tu país
-### Exercise: Level 2
+### Ejercicios: Nivel 2
-1. Create a folder named day_1 inside 30DaysOfPython folder. Inside day_1 folder, create a python file helloworld.py and repeat questions 1, 2, 3 and 4. Remember to use _print()_ when you are working on a python file. Navigate to the directory where you have saved your file, and run it.
+1. Crea en la carpeta 30DaysOfPython una carpeta llamada day_1. Dentro crea helloworld.py y repite las preguntas 1, 2, 3 y 4. Recuerda usar _print()_ en archivos. Navega a la carpeta donde guardaste el archivo y ejecútalo.
-### Exercise: Level 3
+### Ejercicios: Nivel 3
-1. Write an example for different Python data types such as Number(Integer, Float, Complex), String, Boolean, List, Tuple, Set and Dictionary.
-2. Find an [Euclidian distance](https://en.wikipedia.org/wiki/Euclidean_distance#:~:text=In%20mathematics%2C%20the%20Euclidean%20distance,being%20called%20the%20Pythagorean%20distance.) between (2, 3) and (10, 8)
+1. Escribe ejemplos para distintos tipos de datos en Python: números (enteros, flotantes, complejos), cadenas, booleanos, listas, tuplas, conjuntos y diccionarios.
+2. Calcula la distancia euclídea entre (2, 3) y (10, 8): [Euclidean distance](https://en.wikipedia.org/wiki/Euclidean_distance#:~:text=In%20mathematics%2C%20the%20Euclidean%20distance,being%20called%20the%20Pythagorean%20distance).
-🎉 CONGRATULATIONS ! 🎉
+🎉 ¡Felicidades! 🎉
-[Day 2 >>](./02_Day_Variables_builtin_functions/02_variables_builtin_functions.md)
+[Ir al Día 2 >>](./02_Day_Variables_builtin_functions/02_variables_builtin_functions.md)